2013-02-26 26 views
0

我在使用mssql存儲過程(SP)時遇到問題。我擁有的是一張表,其中一列包含SP名稱,我必須做的是獲得該SP名稱並在SP內執行該SP。Mssql:執行存儲過程,其名稱從另一個sp獲得

所以我做了什麼:

  1. 我有一個SP - 確定
  2. 聲明一個變量與SP,將得到的SP名稱OG在表中的SP的名字 - 確定

DECLARE @rs varchar(max) 
DECLARE @sql varchar(max) = N'usp_GetSP)' 
EXECUTE sp_executesql @sql, @rs output 
EXECUTE @rs 

在這裏,我知道我得到的SP的名字時,我做EXECUTE sp_executesql的@sql,但@rs,我不知道。我得到這個錯誤:

Msg 214, Level 16, State 2, Procedure sp_executesql, Line 1 Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'. Msg 2812, Level 16, State 62, Line 4 Could not find stored procedure ''.

  1. 執行的是SP,我回來 - 現在的問題是

這是一個有三個SELECT報表和UNION他們SP和這個SP是第三第二個UNION(最後SELECT聲明),我需要去工作。

有誰知道我該怎麼做?

回答

0

For Error Message:我認爲你應該聲明@sql爲nvarchar not varchar;

在你的情況下,你的賦值nvarchar值(N'usp_GetSP')被轉換爲varchar,就像你定義@sql爲varchar類型一樣。

DECLARE @rs nvarchar(max) 
DECLARE @sql nvarchar(max) = N'usp_GetSP' --not sure why you have ')' 
EXECUTE sp_executesql @sql, @rs output 
EXECUTE (@rs) 

而且check this link如何使用OUTPUT參數與sp_exeutesql

+0

謝謝您的回答。 '''不應該在那裏,它不在我的代碼中... – TeisLindemark 2013-02-27 07:39:53

相關問題