Skip to content

Commit 390af9b

Browse files
unknownunknown
authored andcommitted
Versão funcional e operante
1 parent 6e932d0 commit 390af9b

File tree

4 files changed

+26
-11
lines changed

4 files changed

+26
-11
lines changed

compile.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
flex sqlscriptparser.lex
22
bison -d sqlscriptparser.y
3-
gcc sqlscriptparser.tab.c lex.yy.c -o myparser.out
3+
gcc sqlscriptparser.tab.c lex.yy.c -o sqlparser.exe

sqlscriptparser.lex

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828
"." {}
2929
"*" {}
3030
"," {}
31-
[A-Z0-9]* /*ignore*/
32-
31+
"+" {}
32+
"?" {}
33+
[A-Z0-9a-z]* /*ignore*/
3334
%%
3435

sqlscriptparser.y

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ instrucao: CREATE_TABLE OWNER_OBJECT FIM_COMANDO {
112112
| FIM_COMANDO {}
113113
| OWNER_OBJECT {}
114114
| FK_NAME {}
115+
| CHECK_NAME {}
115116
| COLUMN {}
116117
//
117118
;

teste.txt

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11

2-
3-
42
DECLARE
53
RESOURCE_BUSY EXCEPTION;
64
PRAGMA EXCEPTION_INIT(RESOURCE_BUSY, -00054);
@@ -96,12 +94,27 @@ END;
9694
-- INDEX P/ FK
9795
CREATE INDEX SAFEPAY_ADM.PROM_IDX02 ON SAFEPAY_ADM.PROMOTION (IDT_PAYMENT_REQUEST_MODEL) TABLESPACE TSISAFEPAY01 INITRANS 8 ONLINE;
9896

99-
ALTER TABLE SAFEPAY_ADM.TRANSACTION_CHECKOUT ADD CONSTRAINT FUCK_CK01 CHECK( IND_CHECKOUT_TYPE IN (''W'', ''L'', ''T'', ''G'', ''M'', ''A'', ''V'')) ENABLE NOVALIDATE;
100-
101-
CREATE INDEX SAFEPAY_ADM.PROM_IDX02 ON SAFEPAY_ADM.PROMOTION (IDT_PAYMENT_REQUEST_MODEL) TABLESPACE TSISAFEPAY01 INITRANS 8 ONLINE;
97+
ALTER TABLE SAFEPAY_ADM.TRANSACTION_CHECKOUT ADD CONSTRAINT FUCK_CK01 CHECK( IND_CHECKOUT_TYPE IN ('W',)) ENABLE NOVALIDATE;
10298

103-
ALTER TABLE SAFEPAY_ADM.TRANSACTION_CHECKOUT ADD CONSTRAINT TRANCHEC_CK01 CHECK (IND_CHECKOUT_TYPE IN (''W'', ''L'', ''T'', ''G'', ''M'', ''A'', ''V'')) ENABLE NOVALIDATE;
99+
DECLARE
100+
RESOURCE_BUSY EXCEPTION;
101+
PRAGMA EXCEPTION_INIT(RESOURCE_BUSY, -00054);
102+
NAOEXECUTOU BOOLEAN := TRUE;
103+
BEGIN
104+
WHILE NAOEXECUTOU
105+
LOOP
106+
BEGIN
107+
EXECUTE IMMEDIATE 'ALTER TABLE SAFEPAY_ADM.TRANSACTION_CHECKOUT ADD CONSTRAINT TRANCHEC_CK01 CHECK (IND_CHECKOUT_TYPE IN (''W'', ''L'', ''T'', ''G'', ''M'', ''A'', ''V'')) ENABLE NOVALIDATE';
108+
NAOEXECUTOU := FALSE;
109+
DBMS_OUTPUT.PUT_LINE('RECRIADA TRANCHEC_CK01');
110+
EXCEPTION
111+
WHEN RESOURCE_BUSY THEN
112+
DBMS_LOCK.SLEEP(SECONDS =>1);
113+
WHEN OTHERS THEN
114+
RAISE;
115+
END;
116+
END LOOP;
117+
END;
118+
/
104119

105-
--aaaaaa teste
106120

107-
bbbb

0 commit comments

Comments
 (0)