gpt4 book ai didi

sql-server - 使用存储过程将文件插入到 SQL Server,无需前端

转载 作者:行者123 更新时间:2023-12-03 00:31:44 25 4
gpt4 key购买 nike

我正在尝试通过 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

一切正常。

我想写一个采用动态路径的程序。它给了我错误,我无法在插件中使用 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

关于sql-server - 使用存储过程将文件插入到 SQL Server,无需前端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35673226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com