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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)