2016-11-27 433 views
0
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が有効範囲外です。私はカーソルが正しいと思う。Oracle - サブプログラムまたはカーソルc_tabが有効範囲外です。

+3

エラーの行番号を含む完全なエラースタックを含めると常に役立ちます。そうすれば、問題を特定するのがずっと簡単になります。 –

答えて

3

問題が読み込みラインである:

dbms_output.put_line(c_tab.object_name || ' - '|| i_pocet || 'radku'); 

あなたはこのようc_tabを参照することはできません - その代わり、にあなたがデータを読み込む行変数を参照してください。

dbms_output.put_line(i_tab.object_name || ' - '|| i_pocet || 'radku'); 

運が良かった。

関連する問題