为什么存储过程总返回-1 取存储过程的值 取数据集
一、为什么存储过程总返回-1
你是用ExecuteNonQuery进行“添加”操作的把?
ExecuteNonQuery 不返回任何行数据,但映射到参数的任何输出参数或返回值都会用数据进行填充。
对于查询更新删除操作UPDATE、INSERT 和DELETE 语句,返回值为该命令所影响的行数。
对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也为-1
如果执行了存储过程,返回值必定是-1 , 因此不能根据返回值来判断其是否执行成功。
以上引用(CSDN:benbirdar的发言)
二、取存储过程的值
过程:
ALTER PROCEDURE [dbo].[Up_B_EQCalculation]
@AmmId varchar(18)='',
@RtuCode varchar(12)='',
@Caltime datetime,
@Total decimal(18, 2),
@ReEQ decimal(18, 2)=0 OUTPUT
SqlParameter dSQLPara = new SqlParameter ( "@ReEQ" , SqlDbType.Decimal );
dSQLPara.Direction = ParameterDirection.Output;
cmd.Parameters.Add ( dSQLPara );
cmd.CommandText = "Up_B_EQCalculation";
cmd.CommandType = CommandType.StoredProcedure;
cmd.ExecuteReader( );
cmd.Connection.Close ( );
strReturn = dSQLPara.Value.ToString ( ); //返回值
三、取数据集
string cnstr="data source=.;initial catalog=company;persist security info=False;user id=sa;pwd=sa;";
private SqlCommand cm=new SqlCommand ( ); //建立Command对象
//运行存储过程返回DataSet
public DataSet runSPDataSet ( string StoredProcedureName )
{
cm.Connection = new SqlConnection ( cnstr );
cm.Connection.Open ( );
cm.CommandText = StoredProcedureName;
cm.CommandType = CommandType.StoredProcedure;
try
{
Sq
相关新闻>>
- 发表评论
-
- 最新评论 更多>>