如何将文件路径传递给SQL Server中的存储过程?

时间:2016-07-14 00:09:12

标签: sql-server stored-procedures

我有元素表,想要将word文件上传到varbionary(max)列。 但它不起作用。我无法使用转义字符来解决此问题。

你有什么想法吗?

create table element
(element_id varchar(20) not null,
document_id varchar(20) not null,
student_id varchar(20) not null,
element_name varchar(50),
element_contents varbinary(max),
supervisor_comment varchar(200),
CONSTRAINT PK_Element PRIMARY KEY (element_id, document_id)
);

-----------------------------------------------------------

CREATE PROCEDURE AddElement
    @ElementID nvarchar(20),
    @DocumentID nvarchar(20),
    @StudentID nvarchar(20),
    @ElementName nvarchar(50),
    @ElementPath nvarchar(50)
AS
BEGIN

insert into element(element_id,document_id,student_id,element_name,element_contents) 
    select @ElementID, @DocumentID, @StudentID, @ElementName, BulkColumn 
    FROM OPENROWSET(BULK N'@ElementPath',SINGLE_BLOB) as SRC;

END


------------------------------------------------------------

execute AddElement @ElementID='e001', @DocumentID='d001',@StudentID='20150901',@ElementName='Control Plan',@ElementPath='c:/control_plan.docx'

Msg 4860, Level 16, State 1, Procedure AddElement, Line 21
Cannot bulk load. The file "@ElementPath" does not exist.

1 个答案:

答案 0 :(得分:0)

我认为原因只是使用你的变量:

N'@ElementPath'

将被解释为String" @ ElementPath"并将其作为文件名 - 这是不正确的......