2017-10-17 28 views
-1

存儲過程返回一個值:過程沒有參數和論點提供3

ALTER PROCEDURE [dbo].[spCaller] 
AS 
BEGIN 
    DECLARE @URL nvarchar(255); 

    EXECUTE spBuscarUrl 'MIREX-2017-00001', @url = @URL OUTPUT; 

    SELECT @URL 
END 

當我試圖表現出使用ASP.NET的價值,我得到一個錯誤:

Procedure spCaller has no parameters and arguments were supplied

這是我的C#代碼:

try 
{ 
    string s = System.Configuration.ConfigurationManager.ConnectionStrings["dba"].ConnectionString; 

    SqlConnection conexion = new SqlConnection(s); 
    conexion.Open(); 

    using (SqlCommand cmd = new SqlCommand("spCaller",conexion)) 
    { 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add("@URL", SqlDbType.NVarChar).Value = Label1.Text.Trim(); 

     object o = cmd.ExecuteScalar(); 

     if(o != null) 
     { 
      string id = o.ToString(); 
      lblTitulo.Text = "Completed"; 
     } 
    } 
} 
catch (Exception ex) 
{ 
    throw new Exception(ex.Message); 
} 
+1

的可能的複製[如何使用OUTPUT參數的存儲過程(https://stackoverflow.com/questions/7770924/how-to-use-output - 參數存儲過程) – mjwills

+0

請包含'spBuscarUrl'的源代碼。 – mjwills

回答

1

該錯誤消息是很清楚,你的存儲過程不期望任何參數,而你從傳遞參數的C#代碼。

實際上,您已經在存儲過程中指定了一個不是參數的變量,您需要在它的數據類型後面指定SP名稱參數之後,並且在您的案例中輸入參數OUTPUT關鍵字。

它應該是:

ALTER procedure [dbo].[spCaller] @URL NVarChar(255) OUTPUT 
....... 
....... 

你最後的存儲過程是這樣的:

ALTER procedure [dbo].[spCaller] @URL NVarChar(255) OUTPUT 
AS BEGIN 
EXECUTE spBuscarUrl 
    'MIREX-2017-00001', @url = @URL OUTPUT; 
select @URL 
END 

你可以看看this post解釋如何通過不同類型的參數的存儲過程。

希望它有幫助!

相關問題