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是临时参数,用于获取存储过程的返回值,这个参数名称可以是任意的。

  • 相关阅读:
    python中字典一键多相同值反转技巧
    win10下安装mysql
    上台阶问题的具体走法用python来实现
    桥接模式
    适配器模式
    多线程中lock的使用
    原型模式
    多线程
    建造者模式
    代理模式
  • 原文地址:https://www.cnblogs.com/zhouhb/p/1965902.html
Copyright © 2011-2022 走看看