zoukankan      html  css  js  c++  java
  • C#调用带返回值的存储过程

    1)在SQL Server中建立如下的存储过程:
    
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    GO
    CREATE PROCEDURE [dbo].[GetNameById]
     @studentid varchar(8),
     @studentname nvarchar(50) OUTPUT
    AS
    BEGIN
     SELECT @studentname=studentname FROM student
        WHERE studentid=@studentid
     if @@Error<>0
      RETURN -1
     else 
      RETURN 0 
    END
    该存储过程的作用是根据学号,获取姓名,并使用RETURN关键字来返回值。
    
    如果要在SQL Server的查询分析器中执行该存储过程,对应的SQL语句如下:
    
    Declare  @studentname nvarchar(50),
    exec GetNameById @studentname output,@id=2
    select @studentname
    
    select @@Error
    
    (2)编写C#代码:
    
               using (SqlConnection conn = new SqlConnection(connStr))
                {
                    try
                    {
                        SqlCommand cmd = new SqlCommand("GetNameById", conn);
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.AddWithValue("@studentid", "09888888");  //给输入参数赋值
                        SqlParameter parOutput =cmd.Parameters.Add("@studentname", SqlDbType.NVarChar, 50);  //定义输出参数
                        parOutput.Direction = ParameterDirection.Output;  //参数类型为Output
                        SqlParameter parReturn = new SqlParameter("@return", SqlDbType.Int);
                        parReturn.Direction = ParameterDirection.ReturnValue;   //参数类型为ReturnValue                    cmd.Parameters.Add(parReturn);
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        MessageBox.Show(parOutput.Value.ToString());   //显示输出参数的值
                        MessageBox.Show(parReturn.Value.ToString());  //显示返回值
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
    
    上面的@return是临时参数,用于获取存储过程的返回值,这个参数名称可以是任意的。
    
    拣尽寒枝不肯栖,寂寞沙洲。
    
    
    
    分类: .Net
    
    标签: C#, 存储过程
    
    
    绿色通道: 谢谢推荐! 关注成功 收藏该文与我联系  
    
    
     
    zhouhb
    关注 - 27
    粉丝 - 70 
    
    
    
    关注成功
    
    
    4 
    
    0 
    
    
    推荐成功
    
    
    «  上一篇:DataGridView使用初步
    »  下一篇:利用XmlDocument操作XML文件
  • 相关阅读:
    记下mongoose(转载)
    vue vue-cli中引入全局less变量的方式
    单标签不支持 伪元素
    删除tppabs,href="javascript:if(confirm)...",、/*tpa=http://...
    系统字体放大导致rem布局错乱,解决方案,已通过测试
    IE条件注释
    hbase部署经验与坑总结
    ubuntu安装mysql 5.7
    静态代理和动态代理
    单例模式
  • 原文地址:https://www.cnblogs.com/qqhfeng/p/4842922.html
Copyright © 2011-2022 走看看