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);

SQLServer 中存储过程的更多相关文章

  1. Sqlserver中存储过程,触发器,自定义函数(二)

    Sqlserver中存储过程,触发器,自定义函数: 自定义函数:1.函数类型:2.函数的参数和返回值: 1.函数类型:标量值函数,返回的是一个标量值表值函数:内联表值函数:多语句表值函数. 标量值函数 ...

  2. Sqlserver中存储过程,触发器,自定义函数(一)

    Sqlserver中存储过程,触发器,自定义函数 1.存储过程有关内容存储过程的定义:存储过程的分类:存储过程的创建,修改,执行:存储过程中参数的传递,返回与接收:存储过程的返回值:存储过程使用游标. ...

  3. Sqlserver中存储过程,触发器,自定义函数

    Sqlserver中存储过程,触发器,自定义函数: 1. 触发器:是针对数据库表或数据库的特殊存储过程,在某些行为发生的时候就会被激活 触发器的分类: DML触发器:发生在数据操作语言执行时触发执行的 ...

  4. SqlServer中存储过程中将Exec的执行结果赋值给变量输出

    原文 SqlServer中存储过程中将Exec的执行结果赋值给变量输出 背景: 遇到这样一种情况:动态向存储过程中传入表名和表的某些属性(这里用到的是主键ID),然后利用这两个变量查出一条数据的某些字 ...

  5. SqlServer中存储过程 returnC#代码处理以及对应的MySQL如何改写

    一.SqlServer 中 1. 创建表 create table testuser( id int, --primary key, names ), address ), paw ) ) 2.创建存 ...

  6. sqlserver 中存储过程的基础知识记录

    1.什么是存储过程? 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令. 通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句. 2.为什么要用存储过程? 1)存储过程只在创建时进行 ...

  7. Sqlserver中存储过程和游标的一些使用例子

    /*带输入输出参数存储过程*/ ALTER PROCEDURE pro_test2 @userID INT, @maxUserID INT OUTPUT, @countUser INT OUTPUT ...

  8. SQLServer中存储过程StoredProcedure创建及C#调用(转)

    此文作为入门了解用,转自http://www.2cto.com/database/201502/378260.html 存储过程就是已经编译好的.优化过的放在数据库服务器中的一些SQL语句:可供应用程 ...

  9. SqlServer和MySQL中存储过程out返回值处理C#代码

    1.SqlServer中out处理 C#代码 #region"SqlServer中存储过程处理out返回值" //public void getdata() //{ // stri ...

随机推荐

  1. eclipse打包jar及第三方jar包一起导出(生成SDK)

    一.前言: 因公司需求,需要将某个工具类供外部使用,所以需要生成jar文件.但是jar内还包含了第三方的jar,普通的打包方式无法将lib下的第三方jar包提取. 这将会导致工具jar无法运行,或Ex ...

  2. API 数据缓存(本地缓存)

  3. union 或者 union all 与 order by 的联合使用

    首先清楚:多个select 语句 union 时不是简单的将查询结果拼接起来 而是将sql拼接起来编译(做为一个sql语句),然后去执行. 注: union 连接的语句中只会出现一个order by ...

  4. jQuery实现enter键登录

    在登录时,使用快捷键登录时常用的方法,其中 loginReq()方法为请求登录检索的方法 $("#login").click(function(){ loginReq(); }); ...

  5. delphi 任务栏按钮闪烁(转)

    如果您创建的应用程序是运行在Windows 98或更高版本操作系统上,您可以通过调用API函数FlashWindowEx并赋给它一个FlashWInfo结构体来实现.  而如果是运行在Windows ...

  6. delphi 可以自定义边框的文本框TSkinNormalEdit思路(QQ2011风格)

    需求: QQ我的资料中基本资料窗体中的文本框: 正常状态下,文本框只有一条看起来只有一个像素的边框,边框的颜色从上到下由深到浅的渐变,当鼠标定位到该文本框时,其边框会变粗,而且边框的颜色加亮显示 如下 ...

  7. go modules学习

    https://github.com/golang/go/wiki/Modules https://tonybai.com/2018/07/15/hello-go-module/ https://ww ...

  8. 普通用户授予root权限

    开始用linux的时候会遇到用户权限问题,比如安装软件的时候经常会提示权限不足,下面介绍给普通用户授予root权限. 找到  cd /etc/sudoers可以看到用户的权限是:只有读取的权限(以下操 ...

  9. Scala 可变长参数

    Scala 允许你指明函数的最后一个参数可以是重复的.这可以允许客户向函数传入可变长度参数列表.想要标注一个重复参数,在参数的类型之后放一个星号. 例如:定义一个可变参数的函数param def pa ...

  10. Java设计模式(一)外观模式(门面模式)- 结构型模式

    模式的定义 门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式,其定义如下:要求一个子系统的外部与其内部通信必须通过一个统一的对象进行.门面模式提供一个高层次的接口,使得 ...