2016-07-14 11 views
0

Ich habe Element-Tabelle und möchte Word-Datei in Varbionary (max) Spalte hochladen. Aber es funktioniert nicht. Ich kann das Escapezeichen nicht verwenden, um dieses Problem zu lösen.Wie Übergeben des Dateipfads zu gespeicherter Prozedur in SQL Server?

Haben Sie eine Idee?

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

Mögliches Duplikat von [Verwenden einer Variablen in der OPENROWSET-Abfrage] (http://stackoverflow.com/questions/13831472/using-a-variable-in-openrowset-query) –

Antwort

0

Ich denke, der Grund ist einfach die Nutzung Ihrer Variable:

N'@ElementPath' 

wird als String „@ElementPath“ interpretiert werden und mit diesem als Dateinamen - was nicht korrekt ist ...

+0

Vielen Dank für Ihre Antwort. Ich kenne den Grund. also wie man diesen Code repariert? – haya

+0

Haben Sie versucht, einfach @ElementPath anstelle von N '@ ElementPath' zu verwenden? – Tyron78

Verwandte Themen