Sql代码
CREATE OR REPLACE PROCEDURE sp_test (
p_outstr OUT VARCHAR2
,p_outint OUT NUMBER
,p_ref1 OUT SYS_REFCURSOR
,p_ref2 OUT SYS_REFCURSOR
)
AS
BEGIN
p_outstr := 'abc';
p_outint := '56789';
OPEN p_ref1 FOR SELECT ROWNUM*2 AS RN FROM DUAL CONNECT BY ROWNUM<=10;
OPEN p_ref2 FOR SELECT ROWNUM*2+1 AS RN FROM DUAL CONNECT BY ROWNUM<=10;
END sp_test;
/
过程已创建。
CREATE OR REPLACE PROCEDURE sp_test (
p_outstr OUT VARCHAR2
,p_outint OUT NUMBER
,p_ref1 OUT SYS_REFCURSOR
,p_ref2 OUT SYS_REFCURSOR
)
AS
BEGIN
p_outstr := 'abc';
p_outint := '56789';
OPEN p_ref1 FOR SELECT ROWNUM*2 AS RN FROM DUAL CONNECT BY ROWNUM<=10;
Sql代码
SET AUTOPRINT ON
VAR p_outstr VARCHAR2(10);
VAR p_outint NUMBER;
VAR p_ref1 REFCURSOR;
VAR p_ref2 REFCURSOR;
SET AUTOPRINT ON
VAR p_outstr VARCHAR2(10);
VAR p_outint NUMBER;
VAR p_ref1 REFCURSOR;
VAR p_ref2 REFCURSOR;
Sql代码
scott@ORCL> CREATE TYPE t_test AS OBJECT (
2 id NUMBER
3 ,name VARCHAR2(20)
4 )
5 ;
6 /
类型已创建。
scott@ORCL>CREATE TYPE tb_test AS TABLE OF t_test;
2 /
类型已创建。
scott@ORCL>CREATE OR REPLACE FUNCTION f_test RETURN tb_test
2 AS
3 v_ret tb_test:=tb_test();
4 BEGIN
5 FOR i IN 1..10 LOOP
6 v_ret.EXTEND;
7 v_ret(i) := t_test(i,'name'||i);
8 END LOOP;
9 RETURN v_ret;
10 END f_test;
11 /
已选择10行。
scott@ORCL> CREATE TYPE t_test AS OBJECT (
2 id NUMBER
3 ,name VARCHAR2(20)
4 )
5 ;
6 /
类型已创建。
scott@ORCL>CREATE TYPE tb_test AS TABLE OF t_test;
2 /
类型已创建。
scott@ORCL>CREATE OR REPLACE FUNCTION f_test RETURN tb_test
2 AS
3 v_ret tb_test:=tb_test();
4 BEGIN
5 FOR i IN 1..10 LOOP
6 v_ret.EXTEND;
7 v_ret(i) := t_test(i,'name'||i);
8 END LOOP;
9 RETURN v_ret;
10 END f_test;
11 /
Sql代码
scott@ORCL>create table test (id number, name varchar2(20));
表已创建。
scott@ORCL>CREATE TYPE t_test AS OBJECT (
2 id NUMBER
3 ,name VARCHAR2(20)
4 )
5 /
类型已创建。
scott@ORCL>;
scott@ORCL>CREATE TYPE tb_test AS TABLE OF t_test;
2 /
类型已创建。
scott@ORCL>CREATE OR REPLACE FUNCTION f_test RETURN tb_test
2 AS
3 v_ret tb_test:=tb_test();
4 BEGIN
5 SELECT t_test(id,name)
6 BULK COLLECT INTO v_ret
7 FROM TEST;
8
9 RETURN v_ret;
10 END f_test;
11 /
函数已创建。
scott@ORCL>select * from table(f_test);
未选定行
scott@ORCL>insert into test select rownum,'NAME'||rownum FROM DUAL CONNECT BY RO
WNUM<=10;