Oracle - 子程序或游标 c_tab 超出范围[关闭]
Posted
技术标签:
【中文标题】Oracle - 子程序或游标 c_tab 超出范围[关闭]【英文标题】:Oracle - subprogram or cursor c_tab is out of scope [closed] 【发布时间】:2016-11-27 21:52:04 【问题描述】:create or replace procedure CV8_POCET_RADKU(p_schema VARCHAR2, p_razeni IN varchar2 default 'asc') as
i_dotaz varchar2(200) := 'select count(*) from ';
i_pocet number;
cursor c_tab is
select object_name
from dba_objects where object_type = 'TABLE'
and owner = upper(p_schema)
order by object_name asc;
i_tab c_tab%rowtype;
begin
dbms_output.put_line('Tabulky ze schematu: ' ||p_schema);
open c_tab;
loop
fetch c_tab into i_tab;
exit when c_tab%notfound;
execute immediate i_dotaz || p_schema||'.'||i_tab.object_name into i_pocet;
dbms_output.put_line(c_tab.object_name || ' - '|| i_pocet || 'radku');
end loop;
close c_tab;
end;
Oracle 给我一个错误子程序或游标 c_tab 超出范围。我想我的光标是对的。
【问题讨论】:
包含完整的错误堆栈总是有帮助的,其中包括错误的行号。这将更容易识别问题。 【参考方案1】:问题出在以下行中:
dbms_output.put_line(c_tab.object_name || ' - '|| i_pocet || 'radku');
您不能像这样引用c_tab
- 相反,请引用您将数据读入的行变量:
dbms_output.put_line(i_tab.object_name || ' - '|| i_pocet || 'radku');
祝你好运。
【讨论】:
以上是关于Oracle - 子程序或游标 c_tab 超出范围[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Doctrine + Oracle = 超出最大打开游标 (ORA-01000)
超出最大打开游标 - Oracle 11g | ibatis 2.3.4 |春天 3.0.3