forked from opengaussexamples/examples
add Exception document
This commit is contained in:
parent
f82a2acf79
commit
f871f595d6
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
@ -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 *****
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;";
|
||||
|
|
|
|||
|
|
@ -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++) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue