Der folgende Code gibt Fehler ORA-00942: table or view does not exist
zurück, ich denke, weil PL/SQL-Laufzeit-Engine (oder etwas, was ich nicht weiß) versucht, table_in
als eine Tabelle behandeln warum sollte es so sein, ich habe bereits table_in
als Variable deklariert.Variable wird nicht ersetzt (lernen Dynamic PL/SQL)
Die Tabelle ex26011601
existiert mit Werten im selben Schema.
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;
Ich verstehe EXECUTE IMMEDIATE
würde den Zweck lösen. Was ich versuche zu erhalten, ist, warum es notwendig ist und was mit der aktuellen Aussage falsch ist, dass 'table_in' nicht als Variable behandelt werden kann, selbst nachdem sie im Bereich deklariert wurde. Oder warum wird dort keine Variable erwartet?
Es ist wegen Ihrer select-Anweisung –
PL/SQL nur wahllos keine beliebigen Text ersetzen, die übereinstimmen passiert Parametername. Im Kontext parametrisierter Cursor wertet es nur Bind-Variablen aus. –