Sql server 使用存储过程在不使用前端的情况下将文件插入SQL Server
我正在尝试通过SQL插入文件。我使用以下查询Sql server 使用存储过程在不使用前端的情况下将文件插入SQL Server,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,我正在尝试通过SQL插入文件。我使用以下查询 INSERT INTO [dbo].[Attachments] (FileName, FileBinary) SELECT 'non-date-in-sql-server-column', BulkColumn FROM OPENROWSET(Bulk 'C:\Users\Pictures\Picture.JPG', SINGLE_BLOB) AS BLOB 很好用 我想写一个
INSERT INTO [dbo].[Attachments] (FileName, FileBinary)
SELECT
'non-date-in-sql-server-column',
BulkColumn
FROM
OPENROWSET(Bulk 'C:\Users\Pictures\Picture.JPG', SINGLE_BLOB) AS BLOB
很好用
我想写一个采用动态路径的程序。它给了我一个错误,我不能在addin中获取Filebinary。这是数据类型varbinary。最好的方法是什么
我已经完成了以下操作,但没有正确地使用二进制值
DECLARE @SQLString NVARCHAR(MAX)
SET @SQLString = 'SELECT ' + '''' +@Filename +'''' + ' AS Name,' + 'FileBinary
FROM OPENROWSET(BULK N''' + @ImagePath + ''',SINGLE_BLOB) AS FileBinary(FileBinary);'
Insert Into Attachments (ApplicantID, FileName, FileBinary)
Values (@ApplicantID, @FileName, Convert(varbinary(max), @SQLString))
将Insert语句放入动态查询中并执行它 现在,您的
@SQLString
将不具有FileBinary
值,而是具有动态框架字符串。您需要执行它来获取值
DECLARE @SQLString NVARCHAR(MAX),
@Filename VARCHAR(500), -- Pass file name here
@ApplicantID VARCHAR(500) --Pass Application ID here
SET @SQLString = '
Insert Into Attachments
(
ApplicantID,
FileName,
FileBinary
)
SELECT @ApplicantID,@Filename,FileBinary
FROM OPENROWSET(BULK N''' + @ImagePath
+ ''',SINGLE_BLOB) AS FileBinary(FileBinary);'
EXEC Sp_executesql
@SQLString,
N'@Filename varchar(500),@ApplicantID varchar(500)',
@Filename =@Filename,
@ApplicantID=@ApplicantID