2012-07-26 134 views
2

我從存儲過程中返回0和1,如下所示。我怎樣才能在C#asp.net文件中獲取它?無法從存儲過程中獲取返回值(0或1)。

ALTER procedure [dbo].[crudprocedure] 

    @getusername  varchar(20), 
    @getfirstname  varchar(20), 
    @getlastname  varchar(20), 
    @getaddress   varchar(20) 
as 
begin 
IF not exists (select username from crudtable where [email protected]) 
begin 
insert into crudtable(username,firstname,lastname,address) 
values (@getusername,@getfirstname,@getlastname,@getaddress) 
return 0 
end 
else 
return 1 
end 
+0

** **什麼數據庫系統存儲過程傳回值,是哪個版本? * SQL *只是*結構化查詢語言* - 許多數據庫系統使用的語言,但不是數據庫產品...我們真的需要知道您正在使用的數據庫系統是什麼...... – 2012-07-26 13:23:55

+0

歡迎到StackOverflow:如果您發佈代碼,XML或數據樣本,**請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼示例」按鈕(「{}」),以良好地格式化和語法突出顯示它! – 2012-07-26 13:24:38

+0

將'SELECT 0作爲RetValue'和'SELECT 1作爲RetValue'並使用datareader在C#中獲取該值 – 2012-07-26 13:24:53

回答

1

如果你使用SQL Server - 然後在這裏試試這個代碼:

using (SqlConnection conn = new SqlConnection("...put your connection string here...")) 
using (SqlCommand cmd = new SqlCommand("dbo.crudprocedure", conn)) 
{ 
    cmd.CommandType = CommandType.StoredProcedure; 

    cmd.Parameters.Add("@getusername", SqlDbType.VarChar, 20).Value = "test"; 
    cmd.Parameters.Add("@getfirstname", SqlDbType.VarChar, 20).Value = "test"; 
    cmd.Parameters.Add("@getlastname", SqlDbType.VarChar, 20).Value = "test"; 
    cmd.Parameters.Add("@getaddress", SqlDbType.VarChar, 20).Value = "test"; 

    // define additional paramter of Direction = ReturnValue 
    cmd.Parameters.Add("RETURN_VALUE", SqlDbType.Int).Direction = ParameterDirection.ReturnValue; 

    // open connection, execute stored proc, close connection 
    conn.Open(); 
    cmd.ExecuteNonQuery(); 
    conn.Close(); 

    // fetch the value of the "ReturnValue" parameter 
    int returnValueInt = Convert.ToInt32(cmd.Parameters["RETURN_VALUE"].Value); 
} 

基本上,因爲你送回使用RETURN 1從存儲過程的值,你需要添加一個您的SqlCommand對象的附加參數具有.DirectionParameterDirection.ReturnValue

該參數將被設置爲你使用RETURN ....