17,377
社区成员
发帖
与我相关
我的任务
分享
-- 你是用的什么工具?要用SQL*Plus工具!
-- 进入cmd,执行类似于下面的操作:
C:\Documents and Settings\Administrator>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 4月 21 10:18:45 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
idle> conn eygle/eygle
已连接。
eygle@SZTYORA> create or replace procedure emp_proc(emp_cur out sys_refcursor)
2 as
3 begin
4 open emp_cur for SELECT * FROM EMP;
5 end;
6 /
过程已创建。
eygle@SZTYORA>
eygle@SZTYORA> var v_emp refcursor;
eygle@SZTYORA> exec emp_proc(:v_emp);
PL/SQL 过程已成功完成。
eygle@SZTYORA> print v_emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO LOC
---------- -------------------- ------------------ ---------- ------------------- ---------- ---------- ---------- --------------------------
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30 CHICAGO
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30 CHICAGO
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 400 30 CHICAGO
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30 CHICAGO
eygle@SZTYORA>
-- 就三句话的事情(定义游标变量,执行存储过程并赋值给游标变量、返回游标变量的数据)
var v_cx refcursor;
exec TESTTABLE_Select(:v_cx);
print v_cx;
-- 这么简单也不会,你还能做点什么呢?
var V_CX SYS_REFCURSOR; --回车
exec TESTTABLE_Select(:V_CX); --回车
print V_CX;--回车
var V_CX SYS_REFCURSOR; --回车
TESTTABLE_Select(:V_CX); --回车
print V_CX;--回车
var V_CX SYS_REFCURSOR;
TESTTABLE_Select(:V_CX);
/
print V_CX;
sys@SZTYORA> conn eygle/eygle
已连接。
eygle@SZTYORA> desc emp;
名称 是否为空? 类型
----------------------------------------------------------------------------------------- -------- ------------------------------------------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NOT NULL NUMBER(2)
LOC NOT NULL VARCHAR2(13)
eygle@SZTYORA> create or replace procedure emp_proc(emp_cur out sys_refcursor)
2 as
3 begin
4 open emp_cur for 'SELECT * FROM EMP ';
5 end;
6 /
过程已创建。
eygle@SZTYORA> var emp_cur refcursor;
eygle@SZTYORA> exec emp_proc(:emp_cur);
PL/SQL 过程已成功完成。
eygle@SZTYORA> print emp_cur;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO LOC
---------- -------------------- ------------------ ---------- ------------------- ---------- ---------- ---------- --------------------------
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30 CHICAGO
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30 CHICAGO
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 400 30 CHICAGO
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30 CHICAGO
eygle@SZTYORA> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO LOC
---------- -------------------- ------------------ ---------- ------------------- ---------- ---------- ---------- --------------------------
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30 CHICAGO
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30 CHICAGO
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 400 30 CHICAGO
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30 CHICAGO
print V_CX;