sql >> Databasteknik >  >> RDS >> Oracle

Oracle:Hur man använder lokala procedurvariabler för EXECUTE IMMEDIATE-satser i procedurer

En lokal variabel från proceduren kan bindas till sökfrågans platshållare med USING [OUT][IN] klausul:

  local_id number;
BEGIN
  EXECUTE IMMEDIATE 
       'SELECT SYS_LOCAL_ID_SERIAL_SEQ.NEXTVAL into :local_id FROM dual'
     USING OUT local_id;

Men för den här frågan behöver du inte execute immediate , gör bara:

  local_id number;
BEGIN
  SELECT SYS_LOCAL_ID_SERIAL_SEQ.NEXTVAL into local_id FROM dual;

på Oracle 11g kan du göra det med tilldelningsoperatorn:

  local_id number;
BEGIN
  local_id := SYS_LOCAL_ID_SERIAL_SEQ.NEXTVAL;


  1. 7 sätt att returnera dubbletter av rader som har en primärnyckel i MariaDB

  2. Hur anger man den aktuella arbetsdatabasen för initialiseringsskriptet för en postgres docker-container?

  3. Unik begränsning utan index

  4. MySQL specificerar godtycklig ordning efter id