PLS-00103: Encountered the symbol "CREATE" [message #115856] |
Thu, 14 April 2005 13:48 |
m_scandroglio
Messages: 26 Registered: March 2005
|
Junior Member |
|
|
Hi all!
I have a problem:
alter trigger CAN_CHIAVE compile;
Warning: Trigger altered with compilation errors.
SQL> show error
Errors for TRIGGER CAN_CHIAVE:
LINE/COL ERROR
-------- -----------------------------------------------------------------
14/1 PLS-00103: Encountered the symbol "CREATE"
The trigger syntax is correct 'cause the same script to create it has been launched on other 3 schema identical!!!
any idea????
thanks!
|
|
|
|
Re: PLS-00103: Encountered the symbol "CREATE" [message #115916 is a reply to message #115874] |
Fri, 15 April 2005 04:32 |
m_scandroglio
Messages: 26 Registered: March 2005
|
Junior Member |
|
|
CREATE OR REPLACE TRIGGER CAN_CHIAVE
AFTER UPDATE OF D_FINE_VALIDITA ON CHIAVI FOR EACH ROW
BEGIN
IF DBMS_REPUTIL.FROM_REMOTE = FALSE THEN
UPDATE SET_CHIAVI
SET Q_CHIAVI_DISPONIBILI = Q_CHIAVI_DISPONIBILI - 1
WHERE K_ID_SET = :new.E_ID_SET
AND Q_CHIAVI_DISPONIBILI > 0;
END IF;
END;
any suggestions? I can't understand why on the others db there's not problem!!
|
|
|
|
|
|
|
|
|
|
|
|
Re: PLS-00103: Encountered the symbol "CREATE" [message #116278 is a reply to message #116273] |
Tue, 19 April 2005 03:09 |
William Robertson
Messages: 1643 Registered: August 2003 Location: London, UK
|
Senior Member |
|
|
Quote: | But the command used is "alter trigger CAN_CHIAVE compile;" so there is no sql*PLUS script as it will just pick the source stored in database and re-compile it.
|
Well obviously the source code got into the database somehow, possibly from a script that contained an error?
test_trigger.trg:
CREATE OR REPLACE TRIGGER CAN_CHIAVE
AFTER UPDATE OF D_FINE_VALIDITA ON CHIAVI FOR EACH ROW
BEGIN
IF DBMS_REPUTIL.FROM_REMOTE = FALSE THEN
UPDATE SET_CHIAVI
SET Q_CHIAVI_DISPONIBILI = Q_CHIAVI_DISPONIBILI - 1
WHERE K_ID_SET = :new.E_ID_SET
AND Q_CHIAVI_DISPONIBILI > 0;
END IF;
END;
CREATE OR REPLACE TRIGGER some_other_trigger
AFTER UPDATE OF D_FINE_VALIDITA ON CHIAVI FOR EACH ROW
etc blah blah
/
SQL> @test_trigger.trg
Warning: Trigger created with compilation errors.
SQL> show errors
Errors for TRIGGER CAN_CHIAVE:
LINE/COL ERROR
-------- -----------------------------------------------------------------
13/1 PLS-00103: Encountered the symbol "CREATE"
SQL>
SQL> ALTER TRIGGER CAN_CHIAVE COMPILE;
Warning: Trigger altered with compilation errors.
SQL> show errors
Errors for TRIGGER CAN_CHIAVE:
LINE/COL ERROR
-------- -----------------------------------------------------------------
13/1 PLS-00103: Encountered the symbol "CREATE"
SQL>
|
|
|
|
|
|
|
|
Re: PLS-00103: Encountered the symbol "CREATE" [message #118309 is a reply to message #115856] |
Wed, 04 May 2005 04:49 |
m_scandroglio
Messages: 26 Registered: March 2005
|
Junior Member |
|
|
That's it!
CREATE OR REPLACE TRIGGER CAN_CHIAVE
AFTER UPDATE OF D_FINE_VALIDITA ON CHIAVI FOR EACH ROW
DECLARE
d_fine_val_cl CLIENTI.D_FINE_VALIDITA%TYPE;
d_fine_val_set SET_CHIAVI.D_FINE_VALIDITA%TYPE;
tipo_evento EVENTI.K_ID_EVENTO%TYPE;
stato_set STATI_SET.N_DESCR_BREVE%TYPE;
chiavi_disp Number(3);
soglia Number(3);
cod_banca BANCHE.N_COD_BANCA%TYPE;
user_id CLIENTI.N_USER_ID%TYPE;
id_gen GEN_AUTO.K_ID_GEN_AUTO%TYPE;
new_record Boolean := false;
BEGIN
IF DBMS_REPUTIL.FROM_REMOTE = FALSE THEN
UPDATE SET_CHIAVI
SET Q_CHIAVI_DISPONIBILI = Q_CHIAVI_DISPONIBILI - 1
WHERE K_ID_SET = :new.E_ID_SET
AND Q_CHIAVI_DISPONIBILI > 0;
END IF;
SELECT D_FINE_VALIDITA INTO d_fine_val_cl FROM CLIENTI
WHERE K_ID_CLIENTE = :new.E_ID_CLIENTE;
SELECT D_FINE_VALIDITA INTO d_fine_val_set FROM SET_CHIAVI
WHERE K_ID_SET = :new.E_ID_SET;
SELECT N_DESCR_BREVE INTO stato_set FROM STATI_SET SS
INNER JOIN STATI_SET_BANCA SSB ON SS.K_ID_STATO_SET = SSB.E_ID_STATO_SET
INNER JOIN SET_CHIAVI S ON S.E_ID_STATO_SET_BANCA = SSB.K_ID_STATO_SET_BANCA
WHERE K_ID_SET = :new.E_ID_SET
AND SS.D_FINE_VALIDITA IS NULL;
IF ((d_fine_val_cl IS NULL) AND (stato_set <> 'UTL') AND (d_fine_val_set IS NULL)) THEN
SELECT K_ID_EVENTO INTO tipo_evento FROM EVENTI
WHERE N_DESCR_BREVE = 'BRU' -- ID evento di Bruciatura chiave del set
AND D_FINE_VALIDITA IS NULL;
INSERT INTO STORICO VALUES
(S_STORICO.NEXTVAL,
:new.E_ID_CLIENTE,
(SELECT E_ID_CODICE_CANALI FROM SET_CHIAVI WHERE K_ID_SET = :new.E_ID_SET),
(SELECT E_ID_BANCA FROM SET_CHIAVI WHERE K_ID_SET = :new.E_ID_SET),
tipo_evento,
:new.D_FINE_VALIDITA,
SYSDATE,
(SELECT N_USER_AGGIORNA FROM SET_CHIAVI WHERE K_ID_SET = :new.E_ID_SET));
SELECT Q_CHIAVI_DISPONIBILI, Q_SOGLIA_CHIAVI INTO chiavi_disp, soglia FROM SET_CHIAVI
WHERE K_ID_SET = :new.E_ID_SET;
IF (chiavi_disp - 1 = soglia) THEN
SELECT N_COD_BANCA INTO cod_banca FROM BANCHE
WHERE K_ID_BANCA = (SELECT E_ID_BANCA FROM SET_CHIAVI WHERE K_ID_SET = :new.E_ID_SET)
AND D_FINE_VALIDITA IS NULL;
SELECT N_USER_ID INTO user_id FROM CLIENTI WHERE K_ID_CLIENTE = :new.E_ID_CLIENTE;
BEGIN
SELECT K_ID_GEN_AUTO INTO id_gen FROM GEN_AUTO
WHERE N_USER_ID = user_id
AND N_COD_BANCA = cod_banca;
EXCEPTION WHEN OTHERS THEN
new_record := true;
END;
IF (new_record = true) THEN
INSERT INTO GEN_AUTO (K_ID_GEN_AUTO,N_USER_ID,N_COD_BANCA,F_PROCESSATO,D_AGGIORN_REC)
VALUES (S_GEN_AUTO.NEXTVAL, user_id, cod_banca, 'N', SYSDATE);
END IF;
IF (new_record = false) THEN
UPDATE GEN_AUTO SET F_PROCESSATO = 'N', D_AGGIORN_REC = SYSDATE
WHERE N_USER_ID = user_id AND N_COD_BANCA = cod_banca;
END IF;
END IF;
END IF;
END;
|
|
|
Re: PLS-00103: Encountered the symbol "CREATE" [message #118381 is a reply to message #118309] |
Wed, 04 May 2005 15:52 |
|
Barbara Boehmer
Messages: 9090 Registered: November 2002 Location: California, USA
|
Senior Member |
|
|
It is obvious to everyone but you, that when the script that you have provided was originally run, the final / was omitted and the next create statement was appended to it. So, when you try to alter compile, it tries to re-run that. Hopefully, this should show up when you run the code that I have provided below. Please run the code below and copy and paste the complete results.
select owner, trigger_name, trigger_body
from all_triggers
where name = 'CAN_CHIAVE'
order by owner
/
If you just want to fix the problem, then try dropping the trigger and re-running your script, making sure that you include a / at the end. Then your alter compile should work after that.
|
|
|
Re: PLS-00103: Encountered the symbol "CREATE" [message #124328 is a reply to message #118381] |
Fri, 17 June 2005 09:48 |
mannyrdi
Messages: 1 Registered: June 2005
|
Junior Member |
|
|
Hey you all, I'm getting the same kind of error. Here's my procedure:
CREATE OR REPLACE PROCEDURE recreate_seqs
IS
rows NUMBER;
start_num NUMBER;
BEGIN
start_num := 1661168;
SELECT COUNT(rowid) INTO rows FROM ADDL_CHG_GROUPS;
rows := rows + start_num + 1;
CREATE SEQUENCE ADDL_CHG_GROUP_SQ START WITH rows;
END;
/
show errors
Errors for PROCEDURE RECREATE_SEQS
9/1 PLS-00103: Encountered the symbol "CREATE" when expecting one of the following: begin declare end exception for goto....
I'm sure it's something simple that I'm missing!!
-Manny
|
|
|
Re: PLS-00103: Encountered the symbol "CREATE" [message #124333 is a reply to message #115856] |
Fri, 17 June 2005 10:21 |
JSI2001
Messages: 1016 Registered: March 2005 Location: Scotland
|
Senior Member |
|
|
Hi
CREATE OR REPLACE PROCEDURE recreate_seqs
IS
rows NUMBER;
start_num NUMBER;
BEGIN
start_num := 1661168;
SELECT COUNT(rowid) INTO rows FROM ADDL_CHG_GROUPS;
rows := rows + start_num + 1;
execute immediate 'CREATE SEQUENCE ADDL_CHG_GROUP_SQ START WITH '||rows||';';
END;
/
show errors
|
|
|