PL SQL insert mediante EXECUTE IMMEDIATE

di Anonimizzato15991 il
2 risposte
Salve,

stavo esercitandomi con pl sql ed in particolare stavo vedendo le execute immediate

Il mio scopo è, tramite due procedure, creare una tabella e inserire i dati in essa.

Questa è la procedura che crea la tabella e fin qui ci sono

create or replace PROCEDURE crea_tab_execute_immediate IS
  l_count NUMBER;
BEGIN
  --controllo se la tabella esiste nel db
  SELECT COUNT(*)
  INTO l_count
  FROM USER_TABLES
  WHERE UPPER(TABLE_NAME) = 'TAB_EX_IM';
  --se esiste la elimino ()
  IF l_count > 0 THEN
    EXECUTE IMMEDIATE 'DROP TABLE tab_ex_im';
  END IF;
  EXECUTE IMMEDIATE 'CREATE TABLE tab_tex_in (ID NUMBER(10),NOME VARCHAR(50), COGNOME VARCHAR(50), NATO DATE)';
EXCEPTION
WHEN NO_DATA_FOUND THEN
  NULL;
END crea_tab_execute_immediate;
poi ho creato un'altra procedura che dovrebbe inserirmi i dati nella mia tabella, in questo modo:

create or replace PROCEDURE inserisci_in_tab (P_ID NUMBER,P_NOME VARCHAR2, P_COGNOME VARCHAR2, P_DATA DATE) AS
   id_ins number(3):= P_ID;
   nome_ins varchar2(50) := P_NOME;
   cognome_ins varchar2(50) := P_COGNOME;
   data_ins date := P_DATA;
BEGIN
    EXECUTE IMMEDIATE 'INSERT INTO tab_tex_in VALUES ( id_ins, nome_ins, cognome_ins, data_ins)';
  COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
  NULL;
END inserisci_in_tab;
La procedura viene compilata correttamente, ma quando provo ad inserire i dati in questo modo

EXECUTE inserisci_in_tab(1,'marco','rossi','19-Dicembre-1980');

ho il seguente errore:
Errore con inizio alla riga : 1 nel comando -
EXECUTE inserisci_in_tab(1,'marco','rossi','19-Dicembre-1980')
Report error -
ORA-00984: colonna non consentita in questo caso
ORA-06512: a "HR.INSERISCI_IN_TAB", line 7
ORA-06512: a line 1
00984. 00000 -  "column not allowed here"
*Cause:    
*Action:
Qualcuno potrebbe aiutarmi? non riesco a venirne a capo.

2 Risposte

  • Sei sicuro che il formato di data che usi sia corretto?
    Verifica bene perché a me non lo sembra per niente...
  • gibra ha scritto:


    Sei sicuro che il formato di data che usi sia corretto?
    Verifica bene perché a me non lo sembra per niente...
    Credo di si. Io ho usato sempre questo modo per inserire le date.

    infatti se provo a dare solo il comando SQL

    INSERT INTO tab_tex_in VALUES ( 1,'Marco','Rossi', '19-dicembre-1980') l'inserisce correttamente
Devi accedere o registrarti per scrivere nel forum
2 risposte