Un proceso de referencia, intenta escribir el siguiente proceso aquí: insertar en pub_infor valores (' 1234 ', 0x, 'Esto es una muestra') y luego leer en la imagen: sp _ textcopy @ srvname = ', @. login='sa',@contraseña='sa',@dbname='pubs',@tbname='pub_info',@colname='logo',@filename='c:\picture.bmp',@where cláusula= " donde pub_id = ' 1234 ' ", @ dirección = ' i ' se lee como sp_ textcopy @ srvname = '. ', @ login = ' sa ', @ contraseña = ' sa ', @dbname = 'pubs ', @tbname = 'pub_info ', @colname = 'logo ', @filename = 'D:\picture.bmp ', @ Cláusula WHERE = " WHERE pub _ id = ' 1234 ' ", @ dirección = ' O ' clear: actualizar la columna del conjunto de tablas = null Finalmente nota: Debido a que la longitud de caracteres del nombre del archivo es solo 30: es decir, @filename varchar ( 30), el último Es mejor cambiarlo a 20. Cuando hay una ruta larga, se informará un error: Error: No se puede reconocer el aumento 'xxx' y la longitud del parámetro @exec_str varchar (255) también es mejor: lo cambié a esto: Crear procedimiento sp _ copia de texto (@ srvname varchar (3 0), @login varchar (30), @password varchar (30), @dbname varchar (30), @tbname varchar (30) , @colname varchar (30), @filename varchar (255), @whereclause varchar ( 40), @ dirección char(1))AS DECLARE @ exec _ str varchar(400)SELECT @ exec _ str = ' copia de texto/S ' @ srvname '/U ' @ iniciar sesión '/P ' @ contraseña '/D ' @ dbname '/T ' @ TB nombre '/C ' @ colname '/W " ' @ cláusula donde ' "/F ' @ nombre de archivo '/ @ dirección exec master ..XP _ cmdshell @ exec _ str Eso es todo. Siento que la programación T_SQL es bastante poderosa y debería estudiar mucho si tengo tiempo. Respuesta: Tome la tabla pub_info en la base de datos pubs en SQL_server2000 como ejemplo para describir el proceso: la tabla pub_info contiene: pub_id, logo, pr_info, donde logo es un campo demasiado largo de la imagen. Los pasos para almacenar imágenes de recompensa de procedimientos almacenados en la base de datos incluyen: 1.
Primero inserte una columna, como: insertar en pub_infor valores ('1234', 0x, 'Este es un ejemplo'), donde 0x es solo para garantizar que el campo de imagen no pueda estar vacío, porque el siguiente procedimiento almacenado: copia de texto utiliza copia de texto para convertir la imagen o el archivo copiado al campo de tipo de imagen. Primero inserte 0x (o 0x0) en el campo, luego se podrá usar la copia de texto. De lo contrario, se informa un error como este: Error: Error al recuperar el puntero de texto o imagen y la marca de tiempo. 2: A continuación, cree un procedimiento almacenado: cree el procedimiento sp_text copy(@srvnamevarchar(30), @login varchar (30), @password varchar (30), @dbname varchar (30), @tbname varchar (30), @colname varchar. (30), @filename varchar (30), @whereclause varchar (40), @ dirección char(1))AS DECLARAR @exec_str varchar(255)SELECT @exec_str = 'copia de texto/S' @ srvname '/U ' @ iniciar sesión '/P ' @ contraseña '/D ' @ dbname '/T ' @ TB nombre '/C ' @ colname '/W " ' @ cláusula donde ' "/F ' @ filename ' /@direction exec master .. xp_cmdshell @exec_str Descripción: donde xp_cmdshell: ejecuta la cadena de comando dada como intérprete de línea de comando del sistema operativo y devuelve cualquier resultado como una línea de texto. Otorgue permiso a usuarios no administrativos para ejecutar xp_cmdshell. Según tengo entendido, la copia de texto es como un comando DOS: es decir, el comando de copia de archivo real se ejecuta de manera similar al sistema operativo.
Adoptarlo