2012-11-29 148 views
0

我有我的SQL Server,與這些行代碼開頭的存儲過程:存儲過程調用錯誤2008 R2

CREATE PROCEDURE [dbo].[SP_Notify] 
-- Add the parameters for the stored procedure here 
@UserName nvarchar(50), 
@lastDate datetime 
AS 
BEGIN 

-- my code... 

我嘗試使用此代碼來調用存儲過程:

DECLARE @data datetime 
DECLARE @Username nvarchar(50) 
SET @Username = CAST('myUserName' AS nvarchar(50)) 
SET @data = GetDate() 
SP_Notify @Username , @data 

但這會導致這個錯誤:

Msg 102, Level 15, State 1, Line 10
Syntax error near 'SP_Notify'.

+2

你應該**不**使用'sp_'前綴爲自己的存儲過程 - 這個前綴是由微軟保留,並可能在未來 –

+2

這裏是一個MSDN鏈接確認馬克的觀點引起麻煩: http://msdn.microsoft.com/en-us/library/dd172115%28v=vs.100%29.aspx – Bridge

+4

而且更透徹一點:http://www.sqlperformance.com/2012/10/t -sql-queries/sp_prefix –

回答

5

你需要存儲之前添加EXEC過程調用:

DECLARE @data datetime 
DECLARE @Username nvarchar(50) 
SET @Username = CAST('myUserName' AS nvarchar(50)) 
SET @data = GetDate() 
EXEC SP_Notify @Username , @data 
5

嘗試:

DECLARE @data datetime 
DECLARE @Username nvarchar(50) 
SET @Username = CAST('myUserName' AS nvarchar(50)) 
SET @data = GetDate() 

EXEC SP_Notify @Username = @Username, @lastDate = @data 

我已經添加EXEC,並且指定的參數值,而不是依賴於序號位置通過他們的(這可以回來咬你,否則,也許如果您將來修改SP,請重新排序和/或添加參數)。

+1

最後一個參數應該是'@lastDate = @ data'。 –

+0

@BarryKaye好點,編輯。 – Bridge

相關問題