2011-03-14 39 views
0
CREATE PROCEDURE [dbo].[Code]   
@intEpmName NUMERIC,    
@strFailedEMPID VARCHAR(1000) output  
AS 

DECLARE  
@FailedCodes VARCHAR(1000) 
BEGIN 
---- 
my logic where i need return the value 
SET @strFailedEMPID = @FailedCodes 
----- 
END 

在存儲過程上面,我可以發送值爲「0」到@strFailedEMPID然後我的程序。然而,當我從我的程序返回的值,然後以相同的變量@strFailedEMPID我送價值這樣:如何從程序SQL Server 2005中返回值到C#

lsqlParam = new SqlParameter("@strFailedEMPID ", SqlDbType.VarChar); 
lsqlParam.Value = "0"; 
lsqlParam.Direction = ParameterDirection.ReturnValue; 
lsqlCmd.Parameters.Add(lsqlParam); 

任何人都可以用正確的語法來從過程的返回值幫助嗎?

+0

您需要聲明ParameterDirection爲'Output'不'ReturnValue'在C#代碼 – codingbadger 2011-03-14 12:55:28

回答

1

那是因爲你是決定性的.NET的參數作爲實際上等同於場景中使用存儲過程中RETURN返回一個整數(你不這樣做)一個返回值。

相反,你需要將你的.NET代碼中定義的@strFailedEMPID參數作爲ParameterDirection.Output。如果你想在一個值傳遞和接收一個穿出參數,使用ParameterDirection.InputOutput。

執行存儲過程後,你再只是:

string value = lsqlCmd.Parameters["@strFailedEMPID"].value; 

所以....

lsqlParam = new SqlParameter("@strFailedEMPID ", SqlDbType.VarChar); 
lsqlParam.Value = "0"; 
lsqlParam.Direction = ParameterDirection.InputOutput; 
lsqlCmd.Parameters.Add(lsqlParam); 

lsqlCmd.ExecuteNonQuery(); 
string value = lsqlCmd.Parameters["@strFailedEMPID"].value; 
相關問題