【问题标题】:Oracle - subprogram or cursor c_tab is out of scope [closed]Oracle - 子程序或游标 c_tab 超出范围[关闭]
【发布时间】: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 超出范围。我想我的光标是对的。

【问题讨论】:

  • 包含完整的错误堆栈总是有帮助的,其中包括错误的行号。这将更容易识别问题。

标签: sql database oracle plsql


【解决方案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');

祝你好运。

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2011-08-20
    • 2015-01-01
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    相关资源
    最近更新 更多