diff --git a/sqlTranslate/.idea/workspace.xml b/sqlTranslate/.idea/workspace.xml
index 927c33fbd..c13465a49 100644
--- a/sqlTranslate/.idea/workspace.xml
+++ b/sqlTranslate/.idea/workspace.xml
@@ -4,12 +4,12 @@
-
+
+
-
+
-
@@ -20,8 +20,8 @@
@@ -108,13 +108,6 @@
1723106789329
-
- 1725890826442
-
-
-
- 1725890826442
-
1725896687932
@@ -451,7 +444,14 @@
1726316179152
-
+
+ 1726326745122
+
+
+
+ 1726326745123
+
+
@@ -466,7 +466,6 @@
-
@@ -491,7 +490,8 @@
-
+
+
diff --git a/sqlTranslate/src/main/java/Document/Exception in Oracle b/sqlTranslate/src/main/java/Document/Exception in Oracle
new file mode 100644
index 000000000..b608c4fd7
--- /dev/null
+++ b/sqlTranslate/src/main/java/Document/Exception in Oracle
@@ -0,0 +1,20 @@
+EXCEPTION
+ -- custom exception
+ WHEN e_custom_exception THEN
+ DBMS_OUTPUT.PUT_LINE('Caught an exception: Custom exception raised');
+ -- divide by zero
+ WHEN ZERO_DIVIDE THEN
+ DBMS_OUTPUT.PUT_LINE('Caught an exception: Division by zero');
+ -- invalid text representations
+ WHEN INVALID_NUMBER THEN
+ DBMS_OUTPUT.PUT_LINE('Caught an exception: Invalid number');
+ -- other exceptions
+ WHEN OTHERS THEN
+ DBMS_OUTPUT.PUT_LINE('Caught an exception: ' || SQLERRM);
+
+Example:
+ EXCEPTION
+ WHEN ZERO_DIVIDE THEN
+ DBMS_OUTPUT.PUT_LINE('Caught an exception: Division by zero');
+ WHEN OTHERS THEN
+ DBMS_OUTPUT.PUT_LINE('Caught an exception: ' || SQLERRM);
\ No newline at end of file
diff --git a/sqlTranslate/src/main/java/Document/Todolist b/sqlTranslate/src/main/java/Document/Todolist
index fed81ff29..13fdb9339 100644
--- a/sqlTranslate/src/main/java/Document/Todolist
+++ b/sqlTranslate/src/main/java/Document/Todolist
@@ -12,16 +12,16 @@ Operation
loop... end loop 1
while... loop... end loop 1
for ... in () loop end loop 1
- continue、exit
- return
- exception
- commit、rollback、execute
+ continue、exit 1
+ return ****
+ exception **
+ commit、rollback、execute ****
alter table 1
create table 1
drop table 1
Object
table 1
view 1
- function
- procedure
- trigger
\ No newline at end of file
+ function ***
+ procedure ***
+ trigger *****
\ No newline at end of file
diff --git a/sqlTranslate/src/main/java/Lexer/OracleLexer.java b/sqlTranslate/src/main/java/Lexer/OracleLexer.java
index fd5c8526b..96e3a49d0 100644
--- a/sqlTranslate/src/main/java/Lexer/OracleLexer.java
+++ b/sqlTranslate/src/main/java/Lexer/OracleLexer.java
@@ -32,7 +32,7 @@ public class OracleLexer {
// PL/SQL
, ":=", "IF", "ELSIF", "BEGIN", ".."
// Loop
- , "LOOP", "EXIT", "WHILE", "FOR", "IN"
+ , "LOOP", "EXIT", "WHILE", "FOR", "IN", "CONTINUE"
};
private static final Pattern TOKEN_PATTERN = Pattern.compile(
"(NUMBER\\(.*?\\))|" + // NUMBER() function
diff --git a/sqlTranslate/src/main/java/Main.java b/sqlTranslate/src/main/java/Main.java
index 35a3658c4..7fc0ed165 100644
--- a/sqlTranslate/src/main/java/Main.java
+++ b/sqlTranslate/src/main/java/Main.java
@@ -47,6 +47,7 @@ public class Main {
// " END IF;";
String sql = "LOOP\n" +
" DBMS_OUTPUT.PUT_LINE(v_counter);\n" +
+ " Continue;\n" +
" v_counter := v_counter + 1;\n" +
" EXIT WHEN v_counter > 10;\n" +
" END LOOP;";
diff --git a/sqlTranslate/src/main/java/Parser/OracleParser.java b/sqlTranslate/src/main/java/Parser/OracleParser.java
index 2f893ac34..7844d9208 100644
--- a/sqlTranslate/src/main/java/Parser/OracleParser.java
+++ b/sqlTranslate/src/main/java/Parser/OracleParser.java
@@ -797,7 +797,7 @@ public class OracleParser {
currentNode.addChild(childNode);
currentNode = childNode;
}
- // match EXIT WHEN condition;
+ // match EXIT condition;
else if (parseTokens.get(i).hasType(Token.TokenType.KEYWORD) && parseTokens.get(i).getValue().equalsIgnoreCase("EXIT")) {
ASTNode childNode = new LoopExitNode();
for (int j = i; j < parseTokens.size(); j++) {