zoukankan      html  css  js  c++  java
  • SQLServer 中存储过程

    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<DbParameter> para = 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.StoredProcedure, para);
            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<DbParameter> para = 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.StoredProcedure, para);
            //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); 
     

  • 相关阅读:
    POJ2559 HDU1506 ZOJ1985 Largest Rectangle in a Histogram【堆栈】
    CCF201612-4 压缩编码(100分)
    CCF201612-4 压缩编码(100分)
    HDU1201 18岁生日【日期计算】
    HDU1201 18岁生日【日期计算】
    CCF201403-1 相反数(解法二)(100分)
    CCF201403-1 相反数(解法二)(100分)
    POJ3752 字母旋转游戏【水题】
    POJ3752 字母旋转游戏【水题】
    HDU1869 六度分离
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/5639553.html
Copyright © 2011-2022 走看看