存储过程的输出参数返回null

问题描述:

SqlParameter[] par1 = new SqlParameter[4]; 

par1[0] = new SqlParameter("@prefix", "TIN-CMP-"); 
par1[1] = new SqlParameter("@codeLength", "17"); 
par1[2] = new SqlParameter("@LastCode", ""); 
par1[3] = new SqlParameter("@retVal", SqlDbType.VarChar, 20); 
par1[3].Direction = ParameterDirection.Output; 
var data = SqlHelper.ExecuteNonQuery(this.ConnectionString, "Proc_GenerateID", par1); 

它不抛出任何异常,但返回空值,在SSMS即使程序工作正常存储过程的输出参数返回null

确保SqlHelper.ExecuteQuery正在执行存储过程后读取输出参数值。

例如

yourCommand.ExecuteNonQuery(); 
string retVal = yourCommand.Parameters["@retVal"].Value; 
+0

是的,我已经在调试时检查它的价值,但其显示空 – 2012-03-27 09:51:48

+0

你可以查阅一下正在通过SQL事件探查器中执行SQL,然后手动运行,在SSMS,只是为了验证一切都是理所你会期待的。如果一切看起来不错,可能需要在SqlHelper.ExecuteNonQuery/sproc定义中看到更多代码 – AdaTheDev 2012-03-27 10:02:18