add Exception document

This commit is contained in:
XudongXie 2024-09-15 23:10:55 +08:00
parent f82a2acf79
commit f871f595d6
6 changed files with 44 additions and 23 deletions

View File

@ -4,12 +4,12 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="d8d12963-4777-48e3-9669-309cf5e41d60" name="更改" comment="add Loop ast classes">
<list default="true" id="d8d12963-4777-48e3-9669-309cf5e41d60" name="更改" comment="add Loop">
<change afterPath="$PROJECT_DIR$/src/main/java/Document/Exception in Oracle" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/Generator/OpenGaussGenerator.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Generator/OpenGaussGenerator.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/Document/Todolist" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Document/Todolist" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/Lexer/OracleLexer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Lexer/OracleLexer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/Main.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Main.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/Parser/AST/ASTNode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Parser/AST/ASTNode.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/Parser/OracleParser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Parser/OracleParser.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
@ -20,8 +20,8 @@
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Class" />
<option value="Interface" />
<option value="Class" />
</list>
</option>
</component>
@ -108,13 +108,6 @@
<option name="presentableId" value="Default" />
<updated>1723106789329</updated>
</task>
<task id="LOCAL-00023" summary="add todolist">
<created>1725890826442</created>
<option name="number" value="00023" />
<option name="presentableId" value="LOCAL-00023" />
<option name="project" value="LOCAL" />
<updated>1725890826442</updated>
</task>
<task id="LOCAL-00024" summary="add todolist">
<created>1725896687932</created>
<option name="number" value="00024" />
@ -451,7 +444,14 @@
<option name="project" value="LOCAL" />
<updated>1726316179152</updated>
</task>
<option name="localTasksCounter" value="72" />
<task id="LOCAL-00072" summary="add Loop">
<created>1726326745122</created>
<option name="number" value="00072" />
<option name="presentableId" value="LOCAL-00072" />
<option name="project" value="LOCAL" />
<updated>1726326745123</updated>
</task>
<option name="localTasksCounter" value="73" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
@ -466,7 +466,6 @@
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="add join convert rule" />
<MESSAGE value="refractor" />
<MESSAGE value="add select convert rules" />
<MESSAGE value="add update ast class" />
@ -491,7 +490,8 @@
<MESSAGE value="add Loop document" />
<MESSAGE value="add Loop keywords" />
<MESSAGE value="add Loop ast classes" />
<option name="LAST_COMMIT_MESSAGE" value="add Loop ast classes" />
<MESSAGE value="add Loop" />
<option name="LAST_COMMIT_MESSAGE" value="add Loop" />
</component>
<component name="XDebuggerManager">
<watches-manager>

View File

@ -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);

View File

@ -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
 function ***
 procedure ***
 trigger *****

View File

@ -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

View File

@ -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;";

View File

@ -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++) {