我想问一下如何打印过程中多条语句的输出。假设你想显示dba_objects和段行计数。但是我不能使用dbms_sql. return_result我的版本是11g。
就像,
create or replace procedure get_rows_count
(
cursor1 out SYS_REFCURSOR,
cursor2 out SYS_REFCURSOR
)
as
begin
open cursor1 for select count(*) from dba_objects;
open cursor2 for select count(*) from dba_segments;
end get_rows_count;
/
2条答案
按热度按时间myss37ts1#
假设您要显示dba_objects和段行计数
我猜的。结论:这不是实现它的方法。如果你想从
dba_objects
中获取行计数,那么你应该在任何您想要的变体中(纯SQL、返回那个数字的函数、带有OUT参数的过程(更糟糕的选择),...)。但是,创建一个使用引用游标来那个目的的过程是...嗯,是 * 错误的 *。
如果我理解错了,那么:您编写的过程是可以的。您可以从另一个PL/SQL过程(命名或匿名)调用它,将结果提取到变量中,并对它执行某些操作(例如显示它)。
您的程序(从Scott的表格中选择;我没有访问DBA_ views的权限):
怎么称呼它?见第8行:
结果:
nle07wnf2#
您可以将著名的
DBMS_OUTPUT.PUT_LINE()
与%ROWCOUNT
后缀沿着用于您的情况,例如并且可以从PL/SQL Developer的SQL窗口中按如下方式调用: