2014-03-26 90 views
0
CREATE PROCEDURE GetActiveServerURL 
(
@ActiveURL VARCHAR(100) OUTPUT 
) 
AS 
BEGIN 
SELECT @ActiveURL = RedirectURL FROM HealthCheck WHERE IsPrimary=1 AND Status=1 
END 

錯誤消息存儲過程通過錯誤: 過程或函數「GetActiveServerURL」預計參數「@ActiveURL」,但未提供。期間輸出參數


正如我已經宣佈ActiveURL作爲輸出參數還是老樣子,預計作爲輸入

+0

你怎麼稱呼它? – a1ex07

+0

EXEC GetActiveServerURL @ActiveURL OUTPUT –

+0

它應該像'DECLARE @ActiveURL VARCHAR(100); EXEC GetActiveServerURL @ActiveURL OUTPUT;' – a1ex07

回答

1

必須在您的通話提的是,參數輸出也。

DECLARE @ActiveURL VARCHAR(100) 
EXEC GetActiveServerURL @ActiveURL OUTPUT 

這裏如何從C#

string activeURL; 

using(var conn = new SqlConnection(connectionString)) 
using(var command = new SqlCommand()) 
{ 
    command.Connection = conn; 
    command.CommandText = "GetActiveServerURL"; 
    command.CommandType = CommandType.StoredProcedure; 

    SqlParameter param = new SqlParameter("@ActiveURL", SqlDbType.VarChar, 100); 
    param.Direction = ParameterDirection.Output, 
    command.Parameters.Add(param); 
    conn.Open(); 
    command.ExecuteNonQuery(); 

    activeURL = param.Value; 
} 
+0

當我調用EXEC GetActiveServerURL @ActiveURL OUTPUT ..再次說明:必須聲明標量變量「@ActiveURL」。 –

+0

你在我的文章中看到第一行嗎?顯示更多代碼。如何給SP打電話? –

+0

是的,我見過它。現在如何調用該過程fron c#。我是否需要簡單地說:cmd.CommandText =「GetActiveServerURL」;或其他任何東西 –

0

執行SP您需要調用帶參數的程序,包括輸出指令。

SET @ActiveURL = 'http://' 

EXEC GetActiveServerURL @ActiveURL OUTPUT 
0
CREATE PROCEDURE GetActiveServerURL 
(
DECLARE @ActiveURL VARCHAR(100) OUTPUT 
) 
AS 
BEGIN 
SELECT @ActiveURL = RedirectURL FROM HealthCheck WHERE IsPrimary=1 AND Status=1 
END 

EXEC GetActiveURL @ActiveURL OUTPUT 



     Error : Incorrect syntax near the keyword 'DECLARE'. 

消息102,級別15,狀態1,過程GetActiveServerURL,鄰近 '輸出' 線3 語法錯誤。 Msg 137,Level 15,State 1,Procedure GetActiveServerURL,Line 7 必須聲明標量變量「@ActiveURL」