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.