Det finns "speciellt" beteende i Oracle:Upprepade platshållarnamn i dynamisk SQL Uttalanden
I ett anonymt block- eller CALL-uttalande är det inte nödvändigt att upprepa bindningsvärdena om namnen är lika. Till exempel detta anonyma block fungerar:
DECLARE
a NUMBER := 4;
b NUMBER := 7;
plsql_block VARCHAR2(100);
BEGIN
plsql_block := 'BEGIN calc_stats(:x, :x, :y, :x); END;';
EXECUTE IMMEDIATE plsql_block USING a, b; -- calc_stats(a, a, b, a)
END;
/
Men detta EXECUTE IMMEDIATE plsql_block USING a, b;
fungerar inte inuti en procedur .