2013-04-03 40 views
0

我正在使用以下過程嘗試將xml通過文件路徑插入到xml列中。我得到一個錯誤必須爲ForeignId聲明標量變量。有沒有更好的方式去做我想做的事情,還是我走在正確的道路上?將Xml插入Sql Server的過程 - 必須聲明標量變量

下面是該過程

ALTER PROC [dbo].[InsertXml] @path nvarchar(100) 
        ,@ForeignId uniqueidentifier 
AS 

BEGIN 

SET NOCOUNT ON 

DECLARE @SQL nvarchar(4000) = 
'INSERT INTO XmlTable(XmlId 
      , ForeignId 
      , TestXml) 
SELECT NEWID() 
    , @ForeignId 
    ,* FROM OPENROWSET(
    BULK ''' + @path + ''', 
    SINGLE_BLOB) AS x;' 
EXECUTE(@SQL); 

RETURN @@ERROR; 

END 
+1

已經有[很多問題](http://stackoverflow.com/search?q=sql+must+declare+scalar+variable)對這個 – Pondlife 2013-04-03 22:12:37

回答

2

當你執行使用EXECUTE(SQL)它的@ForeignId價值得不到解決這個問題是使用sp_excuteSQL

一種方式的SQL語句,並做到這一點,而不是EXECUTE(@SQL);

DECLARE @ParmDefinition nvarchar(500); 
SET @ParmDefinition = N'@ForeignId uniqueidentifier'; 
EXECUTE sp_executesql @SQL, @ParmDefinition, @ForeignId ; 

你也可以直接連接@ForeignId到你的sql字符串b ut我不記得使用唯一標識符時是否有問題