以下のコードはエラーORA-00942: table or view does not exist
を返します。PL/SQLランタイムエンジン(または何かわからないもの)がテーブルとして扱われている可能性があります。どうしてそうするのですか、私はすでにtable_in
を変数として宣言しています。変数が置き換えられない(動的PL/SQLの学習)
ex26011601
テーブルは、同じスキーマ内の値とともに存在します。
set serveroutput on
declare
function tabcount (table_in in varchar2)
return pls_integer
is
l_return pls_integer;
begin
select count(*) into l_return from table_in;
return l_return;
end;
begin
dbms_output.put_line(tabcount('ex26011601'));
end;
私はEXECUTE IMMEDIATE
が目的を解決すると理解しています。私が得ようとしているのは、現在のステートメントでなぜ必要であり、スコープ内で宣言されても 'table_in'を変数として扱うことができないということです。または、変数がそこに期待されない理由は何ですか?
SELECT文の –
PL/SQLは、ちょうど無差別に一致させるために起こる任意のテキストを代用しないからですパラメータ名。パラメータ化されたカーソルのコンテキストでは、バインド変数のみが評価されます。 –