`
dadaozei
  • 浏览: 13058 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

SQL 存储过程的几种返回值方法

阅读更多

1.OUPUT参数返回值
例: 向Order表插入一条记录,返回其标识

CREATE   PROCEDURE   [ dbo ] . [ nb_order_insert ] (
@o_buyerid   int
 ,
@o_id   bigint
 OUTPUT
)
AS

BEGIN
SET  NOCOUNT  ON ;
BEGIN

INSERT   INTO   [ Order ] (o_buyerid )
VALUES  ( @o_buyerid
 )
SET   @o_id   =   @@IDENTITY

END
END

存储过程中获得方法:

DECLARE   @o_buyerid   int
DECLARE   @o_id   bigint
EXEC   [ nb_order_insert ]   @o_buyerid  ,o_id  bigint

2.RETURN过程返回值

CREATE   PROCEDURE   [ dbo ] . [ nb_order_insert ] (
@o_buyerid   int
 ,
@o_id   bigint
 OUTPUT
)
AS

BEGIN
SET  NOCOUNT  ON ;
IF ( EXISTS ( SELECT   *   FROM   [ Shop ]   WHERE   [ s_id ]   =   @o_shopid
))
BEGIN

INSERT   INTO   [ Order ] (o_buyerid )
VALUES  ( @o_buyerid
 )
SET   @o_id   =   @@IDENTITY

RETURN   1  — 插入成功返回1
END

ELSE
RETURN   0  — 插入失败返回0
END

存储过程中的获取方法
DECLARE   @o_buyerid   int
DECLARE   @o_id   bigint
DECLARE   @result   bit
EXEC   @result   =   [ nb_order_insert ]   @o_buyerid  ,o_id  bigint  

3.SELECT 数据集返回值

CREATE   PROCEDURE   [ dbo ] . [ nb_order_select ] (
@o_id   int

)
AS
BEGIN
SET  NOCOUNT  ON ;
SELECT  o_id,o_buyerid  FROM   [ Order ]

WHERE  o_id  =   @o_id
GO

存储过程中的获取方法
(1)、使用临时表的方法

CREATE   TABLE   [ dbo ] . [ Temp ] (
[ o_id ]   [ bigint ]   IDENTITY ( 1 , 1 NOT   FOR   REPLICATION   NOT   NULL ,
[ o_buyerid ]   [ int ]   NOT   NULL
)
INSERT   [ Temp ]   EXEC   [ nb_order_select ]   @o_id
– 这时 
Temp  就是EXEC执行SELECT 后的结果集
SELECT   *   FROM   [ Temp ]
DROP   [ Temp ]  — 删除临时表

(2)、速度不怎么样.(不推荐)

SELECT   *   from   openrowset (’provider_name ' , ' Trusted_Connection = yes’, ' exec nb_order_select’)

分享到:
评论

相关推荐

    PL/SQL Developer8.04官网程序_keygen_汉化

     PL/SQL Developer为简化日常开发专门提供了几种工具。使用这些工具,您可以重新编译全部不合法对象、查找数据库源中文本、导入或导出表格、生成测试数据、导出文本文件、监控dbms_alert和dbms_pipe事件、浏览会话...

    Mysql存储过程和函数区别介绍

    存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。 存储过程和函数存在以下几个...

    2009达内SQL学习笔记

    3、对列起别名:有直接起别名,加AS起别名,用双引号起别名等三种方法 (单引号,引起字符串;双引号,引起别名。起别名有符号,或者区分大小写时,必须用双引号) 多表查询时,可给表起别名。(给列起别名,列<空格...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...

    PLSQLDeveloper下载

    工具——PL/SQL Developer为简化日常开发专门提供了几种工具。使用这些工具,您可以重新编译全部不合法对象、查找数据库源中文本、导入或导出表格、生成测试数据、导出文本文件、监控dbms_alert和dbms_pipe事件、...

    如何将图片转换成二进制存储

    图片的常见存储与读取凡是有以下几种: 存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[]. 1.参数是图片路径:返回Byte[]类型: public byte[] ...

    《数据库原理与应用》(第三版)第12章 函数和游标 基础 习题参考答案

    3.SQL Server 2012支持的用户自定义函数有几种?每一种函数的函数体是什么?返回值是什么? 答:标量函数、内联表值函数、多语句表值函数。 标量函数的函数体是可以是一系列SQL语句,返回值是一个标量值; 内联表值...

    千方百计笔试题大全

    70、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 17 71、启动一个线程是用run()还是start()? 17 72、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 18 73...

    java面试宝典

    70、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 17 71、启动一个线程是用run()还是start()? 17 72、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 18 73...

    超级有影响力霸气的Java面试题大全文档

     继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而...

    C#全能速查宝典

    《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...

    java 面试题 总结

    继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而...

    最新Java面试宝典pdf版

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    asp.net面试题

    1.new有几种用法 第一种:new Class(); 第二种:覆盖方法 public new XXXX(){} 第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。 2.如何把一个array复制到arrayList里 foreach( ...

    Java面试笔试资料大全

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    Java面试宝典2010版

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 47、sleep() 和 wait() 有什么区别? 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 ...

    Java面试宝典-经典

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

    JAVA面试宝典2010

    46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 29 47、sleep() 和 wait() 有什么区别? 30 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明...

Global site tag (gtag.js) - Google Analytics