Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle:So verwenden Sie lokale Prozedurvariablen für EXECUTE IMMEDIATE-Anweisungen in Prozeduren

Eine lokale Variable aus der Prozedur kann mit USING [OUT][IN] an den Abfrageplatzhalter gebunden werden Klausel:

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

Aber für diese Abfrage brauchen Sie nicht execute immediate , tun Sie einfach:

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

Auf Oracle 11g können Sie dies mit dem Zuweisungsoperator tun:

  local_id number;
BEGIN
  local_id := SYS_LOCAL_ID_SERIAL_SEQ.NEXTVAL;