在网上查到了这样的
declare
I_NAME VARCHAR2(10) := 'xxx';
I_IS_USING VARCHAR2(2) := '1';
v_cursor SYS_REFCURSOR;
v_count NUMBER;
r_emp emp%rowtype; ?? 这里不理解
begin
PROC_T_PROCEDURE_OBJ_LIST(I_NAME,I_IS_USING, v_cursor,v_count);
loop
fetch v_cursor into r_emp;
exit when v_cursor%NOTFOUNRD;
dbms_output.put_line('name: ' || r_emp.NAME || ' info: ' || r_emp.INFO || ' using: ' || r_emp.IS_USING);
end loop;
close v_cursor;
end;
1
ayumilove 2015-06-09 14:49:11 +08:00
%TYPE 和 %ROWTYPE 类似
百度一下 oracle %ROWTYPE 很多解释 |
2
ayumilove 2015-06-09 14:51:33 +08:00
你想用什么调用
|
4
sun1991 2015-06-09 16:08:17 +08:00
显示结果的地方不一样. dbms_output的输出不在普通的查询结果集里面, 而是在专门的dbms output里面的.
|
5
ayumilove 2015-06-10 08:25:52 +08:00
如果仅是为了调试使用,直接在DBMS output 中查看结果就可以了(注意开启)。
我机器上只安装了 Toad,给你截图看下 |
6
coolicer OP @ayumilove 能给个邮箱吗,想问一下你。
DECLARE p1 VARCHAR2(100); p2 sys_refcursor; p3 VARCHAR2(100); BEGIN p1:='dd'; p3:='3'; testproc(p1,p2,p3); -- 这里写法有没有错?然后我再从网上找了循环游标的,但是还是报错。 END; |
7
ayumilove 2015-06-10 11:42:10 +08:00
|
9
ayumilove 2015-06-11 07:48:45 +08:00
我个人
在用有返回值的 这种情况,一般使用函数; DML时候 用存储过程。 但这不是绝对的,怎么方便怎么来。 |