sql >> Databasteknik >  >> RDS >> Oracle

med EXECUTE IMMEDIATE med flera samma bindningsargument

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 .



  1. Primära nycklar i Oracle och SQL Server

  2. Django JSONFältfiltrering

  3. Django-DB-migrationer:kan inte ALTER TABLE eftersom den har väntande triggerhändelser

  4. Finns det något annat sätt att skapa begränsningar under skapande av SQL-tabeller?