存储过程的三种返回值与其获得方法

简介:

 

 
  1. CREATE TABLE [dbo].[Order](  
  2. [o_id] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,  
  3. [o_buyerid] [intNOT NULL 
  4. )  
  5. 1.OUPUT参数返回值  
  6.  
  7. 例: 向Order表插入一条记录,返回其标识  
  8. CREATE PROCEDURE [dbo].[nb_order_insert](  
  9. @o_buyerid int ,  
  10. @o_id bigint OUTPUT 
  11. )  
  12. AS 
  13. BEGIN 
  14. SET NOCOUNT ON;  
  15. BEGIN 
  16. INSERT INTO [Order](o_buyerid )  
  17. VALUES (@o_buyerid )  
  18. SET @o_id = @@IDENTITY  
  19. END 
  20. END 
  21. 存储过程中获得方法:  
  22. DECLARE @o_buyerid int 
  23. DECLARE @o_id bigint 
  24. EXEC [nb_order_insert] @o_buyerid ,o_id bigint 
  25.  
  26. RETURN过程返回值  
  27. CREATE PROCEDURE [dbo].[nb_order_insert](  
  28. @o_buyerid int ,  
  29. @o_id bigint OUTPUT 
  30. )  
  31. AS 
  32. BEGIN 
  33. SET NOCOUNT ON;  
  34. IF(EXISTS(SELECT * FROM [Shop] WHERE [s_id] = @o_shopid))  
  35. BEGIN 
  36. INSERT INTO [Order](o_buyerid )  
  37. VALUES (@o_buyerid )  
  38. SET @o_id = @@IDENTITY  
  39. RETURN 1 — 插入成功返回1  
  40. END 
  41. ELSE 
  42. RETURN 0 — 插入失败返回0  
  43. END 
  44. 存储过程中的获取方法  
  45. DECLARE @o_buyerid int 
  46. DECLARE @o_id bigint 
  47. DECLARE @result bit 
  48. EXEC @result = [nb_order_insert] @o_buyerid ,o_id bigint 
  49.  
  50. 3.SELECT 数据集返回值  
  51. CREATE PROCEDURE [dbo].[nb_order_select](  
  52. @o_id int 
  53. )  
  54. AS 
  55. BEGIN 
  56. SET NOCOUNT ON;  
  57. SELECT o_id,o_buyerid FROM [Order]  
  58. WHERE o_id = @o_id  
  59. GO  
  60.  
  61. 存储过程中的获取方法:  
  62. 3.1使用临时表  
  63. CREATE TABLE [dbo].[Temp](  
  64. [o_id] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,  
  65. [o_buyerid] [intNOT NULL 
  66. )  
  67. INSERT [TempEXEC [nb_order_select] @o_id  
  68. – 这时 Temp 就是EXEC执行SELECT 后的结果集  
  69. SELECT * FROM [Temp]  
  70. DROP [Temp] — 删除临时表  
  71. 3.2使用openrowset(不过就是速度不怎么样)  
  72. SELECT * from openrowset(’provider_name','Trusted_Connection=yes’,'exec nb_order_select’)  

 


本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/380219,如需转载请自行联系原作者

相关文章
|
存储 Oracle 关系型数据库
mysql存储过程调试方法
mysql存储过程调试方法
1010 0
|
4月前
|
存储 关系型数据库 MySQL
【YashanDB知识库】MySQL返回结果集的存储过程的改写方法
本文介绍了将MySQL存储过程改写至YashanDB的解决方案。由于MySQL存储过程可直接返回结果集,而YashanDB需通过返回SYS_REF_CURSOR的函数实现类似功能,因此需要对代码进行转换。示例中展示了如何将MySQL存储过程`proc1`改写为YashanDB函数,并调整JDBC应用代码以适配REF_CURSOR输出参数,从而正确获取查询结果。此方法确保了跨数据库场景下的兼容性与功能性。
|
11月前
|
存储 SQL 数据库
触发器的设计、掌握存储过程的基本概念和创建、执行、删除方法。掌握数据库备份的方法和数据库恢复的方法。
这篇文章介绍了数据库中触发器的设计概念,包括创建、修改、删除触发器的方法,并通过实验内容教授如何使用SQL命令创建DML触发器以及如何利用触发器实现数据的完整性和自动化处理。
触发器的设计、掌握存储过程的基本概念和创建、执行、删除方法。掌握数据库备份的方法和数据库恢复的方法。
|
存储 Oracle Java
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
|
存储 SQL Oracle
Oracle 存储过程和方法全攻略:实战详解调用技巧与注意事项
Oracle 存储过程和方法全攻略:实战详解调用技巧与注意事项
1103 0
|
存储 SQL
vc++中,用ado执行sql server存储过程,并且取得返回值的例子
vc++中,用ado执行sql server存储过程,并且取得返回值的例子
|
SQL 存储 缓存
mssql sqlserver 批量删除所有存储过程的方法分享
原文:mssql sqlserver 批量删除所有存储过程的方法分享 转自:http://www.maomao365.com/?p=6864 摘要: 下文讲述采用sql脚本批量删除所有存储过程的方法,如下所示: 实验环境:sqlserver 2008 R2 平常使用sql脚本,删除...
1116 0