C#中使用带返回值的存储过程

it2022-05-09  30

Posted on 2007-01-09 13:21 寒夜听雨 阅读(4310) 评论(2)   编辑 收藏 网摘 所属分类: CSharp 例如在向数据库添加新数据时,需要检测是否有重复 本例介绍如何把这个检测的过程放在存储过程中,并用程序调用检测的结果做出反应。 存储过程如下: CREATE   PROCEDURE  DInstitute_Insert @InstituteNO   nvarchar ( 6 ), @InstituteName   nvarchar ( 40 )   AS declare   @return   int , @count   int if ( ltrim ( rtrim ( @InstituteName )) = ''   or   ltrim ( rtrim ( @InstituteNO )) = '' )    select   @return = 3 -- 返回3表示提交的数据有空值 else begin    select   @count = count ( 1 from  DInstitute  where  InstituteNO = @InstituteNO   if ( @count > 0 )     select   @return = 1 -- 返回1表示编号有重复   else   begin      insert   into  DInstitute (InstituteNO,InstituteName)  values   ( @InstituteNO , @InstituteName )     if ( @@error > 0 )      select   @return = 2 -- 返回2表示数据操作错误    else      select   @return = 0 -- 返回0表示数据操作成功    end end return   @return GO 其中DInstitute 是一个学院信息表。只有InstituteNO(学院编号)、InstituteName(学院名称)两个字段。 在C#中调用本存储过程的代码如下: // 执行插入操作             SqlCommand com1  =   new  SqlCommand( " DInstitute_Insert " , DBcon);              if  (com1.Connection.State  ==  ConnectionState.Closed)                 com1.Connection.Open();             com1.CommandType  =  CommandType.StoredProcedure;             com1.Parameters.Add( new  SqlParameter( " @InstituteNO " ,SqlDbType.NVarChar, 6 ));             com1.Parameters.Add( new  SqlParameter( " @InstituteName " , SqlDbType.NVarChar,  40 ));             com1.Parameters.Add( new  SqlParameter( " @return " , SqlDbType.Int));             com1.Parameters[ " @return " ].Direction  =  ParameterDirection.ReturnValue;             com1.Parameters[ " @InstituteNO " ].Value  =  t_NO.Text;             com1.Parameters[ " @InstituteName " ].Value  =  t_name.Text;              try             {                 com1.ExecuteScalar();             }              catch (SqlException ee)             {                 DB.msgbox( " 操作失败! " + ee.Message.ToString());                  return ;             }              finally             {                 com1.Connection.Close();             }              string  temp  =  com1.Parameters[ " @return " ].Value.ToString();              // 返回0表示数据操作成功              // 返回1表示编号有重复                 // 返回2表示数据操作错误               // 返回3表示提交的数据有空值              switch  (temp)             {                  case   " 0 " :                     DB.msgbox( " 添加成功! " );                      break ;                  case   " 1 " :                     DB.msgbox( " 编号有重复! " );                      break ;                  case   " 2 " :                     DB.msgbox( " 数据操作错误! " );                      break ;                  case   " 3 " :                     DB.msgbox( " 提交的数据有空值! " );                      break ;             }             Binding();  // 刷新datagrid

Feedback

#1楼    回复  引用    

2007-01-10 14:22 by PASS [未注册用户] return 只能返回int型 可以用output参数

#2楼    回复  引用    

2007-05-24 17:01 by 過客 [未注册用户] 不建議用return 建議用output

转载于:https://www.cnblogs.com/ijunxiong/archive/2008/11/15/1334187.html

相关资源:存储过程实例解释 事务实例解释 C#中使用带返回值的存储过程

最新回复(0)