Get Dataset from Stored Procedure in Oracle

本文介绍如何在存储过程中通过变量返回数据集,并详细解释了如何使用游标机制实现这一功能,包括创建存储过程、执行存储过程以及使用SQL初始化sys_refcursor变量的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Stored Procedure (SP) can return data through one variable. We need to get dataset some times. Only one way to get the target is return cursor which can store dataset in SP.

A cursor is a mechanism by which you can assign a name to a “Select statement” and manipulate the information with that SQL statement.

l  Following is an example.

CREATE OR REPLACEPROCEDURE SP_NAME(

                                             , TEST1 OUT sys_refcursor //refers to a cursor that can be pass cursors from and to a SP

                                )

AS

v_created VARCHAR2(100);

 

BEGIN

OPEN TEST1 FOR SELECT created  FROM TABLE_NAME;

   

LOOP

FETCH TEST1 INTO v_created;

EXIT WHEN TEST1%NOTFOUND;

dbms_output.put_line(v_created);

END LOOP;

CLOSE TEST1;

 

END SP_TEMPLATE;

/

l  Using the SQL to execute the SP

DECLARE

  TEST1 sys_refcursor;

BEGIN

  SYSTEM.KTEST (TEST1 );

END;

 

l  Use the SQL1 to initial a sys_refcursor, also a string can be used to initial a sys_refcursor as SQL2

SQL1:

OPENTEST1 FOR SELECT created  FROM TABLE_NAME;

 

SQL2:

         initialStr VARCHAR2(100);

         initialStr := 'SELECT created

                FROM siebel.s_srv_req';

OPENTEST1 FOR initialStr;

Note: If you want to call the SP with cursor with JAVA, remove the code after LOOP clause. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值