问题描述
ALTERPROCEDURE[dbo].[test]ASselect33RETURN
查询分析器执行结果RETURN值为33SqlConnectionconn=newSqlConnection(StrConn);conn.Open();SqlCommandcmd=newSqlCommand("test",conn);cmd.CommandType=CommandType.StoredProcedure;cmd.Parameters.Add(newSqlParameter("@ReturnValue",SqlDbType.Int,4,ParameterDirection.ReturnValue,false,0,0,string.Empty,DataRowVersion.Default,null));introwsAffected=cmd.ExecuteNonQuery();intresult=(int)cmd.Parameters["@ReturnValue"].Value;//??这里为什么返回的是0
解决方案
解决方案二:
cmd.Parameters["@ReturnValue"].Direction=ParameterDirection.ReturnValue;
解决方案三:
--如果要在程序中获取存储过程输出参数,将存储过程改为:ALTERPROCEDURE[dbo].[test]@ReturnValueintoutputASset@ReturnValue=33go
解决方案四:
谢谢楼上的如果我吧SQL改成ALTERPROCEDURE[dbo].[test]ASdeclare@aintset@a=33RETURN@a
这样就能获取retunrn但是我不想定义declare@a我看别人写的select33RETURN就直接返回select的值
解决方案五:
因为第一个过程没有返回值,而是执行一次select查询,而第二个有返回值,即return@a。第一个改成这样就有值了SqlConnectionconn=newSqlConnection(StrConn);conn.Open();SqlCommandcmd=newSqlCommand("test",conn);cmd.CommandType=CommandType.StoredProcedure;SqlDataReaderreader=cmd.ExecuteReader();intreturnValue=(int)reader.GetValue(0);Console.WriteLine(returnValue);
解决方案六:
ALTERPROCEDURE[dbo].[test]@ReturnValueintoutputASset@ReturnValue=33gocmd.Parameters["@ReturnValue"].Direction=ParameterDirection.Output;ORALTERPROCEDURE[dbo].[test]ASreturn33gocmd.Parameters["@ReturnValue"].Direction=ParameterDirection.ReturnValue;
解决方案七:
是不是需要设置一下输入或输出呢?
解决方案八:
没返回值你调用了根本没意义!