加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 我可以在过程中传递游标吗?

发布时间:2020-12-12 06:50:07 所属栏目:MsSql教程 来源:网络整理
导读:我可以在程序中传递光标吗? CURSOR BLT_CURSOR ISSELECT BLT.sol_id,BLT.bill_id,BLT.bank_idFROM BLT; 是我的光标. Procedure abc(i want to pass the cursor here) 我该怎么做. 解决方法 我假设你正在使用Oracle(它会出现这种情况). 你可以这样做: PROCED
我可以在程序中传递光标吗?
CURSOR  BLT_CURSOR IS
SELECT  BLT.sol_id,BLT.bill_id,BLT.bank_id
FROM BLT;

是我的光标.

Procedure abc(i want to pass the cursor here)

我该怎么做.

解决方法

我假设你正在使用Oracle(它会出现这种情况).

你可以这样做:

PROCEDURE abc( p_cursor IN SYS_REFCURSOR) IS
   v_sol_id blt.sol_id%TYPE;
   v_bill_id blt.bill_id%TYPE;
   v_bank_id blt.bank_id%TYPE;
BEGIN
   LOOP
      FETCH p_cursor INTO v_sol_id,v_bill_id,v_bank_id;
      EXIT WHEN p_cursor%NOTFOUND;
      ...
   END LOOP;
END;

然后使用它:

DECLARE
   v_cursor SYS_REFCURSOR;
BEGIN
   OPEN v_cursor FOR
      SELECT  BLT.sol_id,BLT.bank_id
      FROM BLT;
   abc (v_cursor);
   CLOSE v_cursor;
END;

但是,请注意,过程abc需要知道游标的结构,即它返回3列特定类型.如果您希望能够将任何游标传递给该过程,那么您需要查看使用DBMS_SQL包(这不是一件容易的事!)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读