2013-05-16 25 views
0

我使用EXECUTE SP_EXECUTESQL從另一個存儲過程調用存儲過程,但出現錯誤。我沒有嘗試過,所以我不知道什麼是錯的。通過EXECUTE從另一個SP調用SP SP_EXECUTESQL

這裏SPGetServiceState是SP,並且@Id(IN), @Return_State(OUT), @Return_Execute_Date(OUT)是需要通過的參數,並且@Request_Id有id需要通過。

EXECUTE SP_EXECUTESQL N'SPGetServiceState', N'@Id int, 
    @Return_State tinyint, @Return_Execute_Date smalldatetime', 
    @Id = @Request_Id, @Return_State = 0, @Return_Execute_Date = NULL 
+1

爲什麼你使用'sp_executesql'? –

+0

@MikaelEriksson:其實我讀了一個小冊子,EXECUTE SP_EXECUTESQL比exec更有效。所以我認爲我應該嘗試更好的。 – Dhwani

+0

有趣的是,你有鏈接到博客? –

回答

1

除非你檢索變量的存儲過程的名稱,也沒有必要對動態SQL。你可以:

exec dbo.SPGetServiceState(@Id, @Return_State output, @Return_Execute_Date output); 

不要忘了output符。沒有它,參數被視爲輸入參數。

+0

其實我讀了一下,EXECUTE SP_EXECUTESQL比exec更有效。所以我認爲我應該嘗試更好的。 – Dhwani

+0

@ITBeginner:對於動態SQL,'sp_executesql'優於'exec'。但是你不需要動態SQL來調用存儲過程。 – Andomar

+0

哦,謝謝。我真的不知道那件事。 – Dhwani