sql 存储过程,返回数据集 并返回总行数

sql 存储过程,返回数据集 并返回总行数,第1张

1、打开SQL Server Management Studio找到存储过程所在的数据库。在对象资源管理器详细信息中可以看到存储过程的文件夹。

2、点击打开这个文件夹可以,在搜索中输入要搜索的存储过程名称。

3、同样也可以在数据库目录结构处选择存储过程右键菜单中的筛选设置。

4、在这里可以进行详细的条件筛选设置。将需要查看的存储过程搜索出来。

5、找到这个SQL存储过程之后,也可以右键点击菜单中的修改,进入SQL存储过程编辑。

6、查看SQL存储过程过程是否带有参数,因为要执行SQL存储过程时需要使用的参数。

结果集有必要放在表里面返回来,直接返回游标就可以了,结果集也可以看作是张表的。

DB2的的解决方案:

1.声明存储过程的时候,在声明之后添加 RESULT SETS 1,表示返回一个结果集,示例如下:

CREATE PROCEDURE YOUPRO(IN P_UserId INTEGER)

LANGUAGE SQL

RESULT SETS 1

------------------------------------------------------------------------

-- SQL 存储过程(获取用户信息)

------------------------------------------------------------------------

P1: BEGIN

--声明会使用到的参数

.... ....

... .....

2.在存储过程中声明一个游标,然后返回,示例如下:

DECLARE C1 CURSOR WITH RETURN FOR SELECT *FROM TABLE

OPEN C1

Oracle的解决方案:

1.先定义一个包,示例如下:

create or replace package CursorPackage as

type my_cursor is ref cursor

end CursorPackage

2.在存储过程返回参数使用这个定义的参数,示例如下:

create or replace procedure YOUPRO(P_UserId IN NUMBER, C_Return OUT CursorPackage.my_cursor)IS ... ... ..

3.存储过程中,给返回参数赋值,示例如下:

OPEN C_Return FOR SELECT * FROM TABLE

Sql Server的解决方案

直接返回SELECT * FROM TABLE,SqlServer中可以直接返回结果。

希望对你有帮助!

mysql中要获得存储过程的返回值,可以增加一个out参数,用来返回。

mysql中存储过程的例子:

CREATE PROCEDURE addvoucher (

IN userid INT,

IN voucherid INT,

OUT result INT

)

BEGIN

SELECT

@endate_a := endate ,@batch_a := batch ,@c_count_a := c_count,

@isdead_a := isdead

FROM

t_voucher

WHERE

id = voucherid

SET autocommit = 0

IF EXISTS (

SELECT

*

FROM

t_user_voucher tuv,

t_voucher tv

WHERE

tv.id = tuv.voucherid

AND tv.batch =@batch_a

) THEN

SET result = 1-- 已存在

SELECT

result

ELSE

IF @c_count_a >0 THEN

IF (

TO_DAYS(@endate_a) - TO_DAYS(NOW())

) >0 THEN


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9926996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存