• SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)


    存储过程有三种返回:   

    1.   return返回数字型数据   

    2.   用返回参数返回结果,可以返回各种数据类型(通过游标来循环查询结果每一行)   

    3.   直接在存储过程中用select返回结果集,可以是任意的select语句,这意味着是任意的返回结果集

     

    方法一:return返回数字型数据 

    1. 创建存储过程

    --SQLSERVER 2005示例数据库

    USE AdventureWorks

    GO

    CREATE PROCEDURE checkstate 

    @param VARCHAR(11)

    AS

    IF (

           SELECT StateProvince

           FROM   Person.vAdditionalContactInfo

           WHERE  ContactID = @param

       ) = 'WA'

        RETURN 1

    ELSE

        RETURN 2;

    GO

    2. 在存储过程中调用

    DECLARE @return_status INT;

    EXEC @return_status = checkstate '9';  --将存储过程返回值赋给@return_status

    SELECT 'Return Status' = @return_status;

    GO

    3. VS中调用

     List<DbParameterpara = new List<DbParameter>();

            para.Add(new SqlParameter("@param", 9));

            SqlParameter pa = new SqlParameter();

            pa.ParameterName = "@return";

            pa.SqlDbType = SqlDbType.Int;

            pa.Direction = ParameterDirection.ReturnValue;

            para.Add(pa);

            int i = DBHelper.ExecuteSql("checkstate"CommandType.StoredProcedurepara);

            Response.Write(para[1].Value.ToString());

     

     

    方法二:用返回参数返回结果,可以返回各种数据类型(通过游标来循环查询结果每一行)   

    1. 创建存储过程

    --SQLSERVER 2005示例数据库

    USE AdventureWorks

    GO

    CREATE PROCEDURE OutPutValue 

    @param VARCHAR(11),

    @param2 VARCHAR(11) OUTPUT

    AS

    IF (

           SELECT StateProvince

           FROM   Person.vAdditionalContactInfo

           WHERE  ContactID = @param

       ) = 'WA'

       SET @param2='Good'

    ELSE

       SET @param2='Bad'

    GO

    2. 在存储过程中调用

    DECLARE @param1 NVARCHAR(100)

    DECLARE @param2 NVARCHAR(100)

    SET @param1='9'

    EXEC OutPutValue '9',@param2 OUTPUT

    SELECT @param2

    3. VS中调用

         List<DbParameterpara = new List<DbParameter>();

            para.Add(new SqlParameter("@param""9"));

            SqlParameter pa = new SqlParameter();

            pa.Direction = ParameterDirection.Output;

            pa.ParameterName = "@param2";

            pa.Size = 11;

            para.Add(pa);

            int i = DBHelper.ExecuteSql("OutPutValue "CommandType.StoredProcedurepara);

            //OutPut返回值

            Response.Write(para[1].Value.ToString());  //输出返回值

     

     

    方法三:直接在存储过程中用select返回结果集,可以是任意的select语句,这意味着是任意的返回结果集  

    1. 创建存储过程

    --SQLSERVER 2005示例数据库

    USE AdventureWorks

    GO

    CREATE PROCEDURE ReturnDataTable

    AS

    BEGIN

    SELECT * FROM Person.vAdditionalContactInfo

    END 

    GO

    2. 在存储过程中调用

    EXEC ReturnDataTable

    3. VS中调用

    //存储过程返回结果集可存放在DataTable

     DataTable dt = DBHelper.GetDataTable("ReturnDataTable"CommandType.StoredProcedure); 

     

     

  • 相关阅读:
    新人入住博客,互相交流,互相进步
    DHCP技术
    一些额外技术
    OSPF技术
    一些常用的命令
    RSTP技术及原理
    BFD原理
    VRRP技术
    Super VLAN技术
    哈希表(HashMap)
  • 原文地址:https://www.cnblogs.com/gossip/p/2018548.html
Copyright © 2020-2023  润新知