[plsql] Convert ParenthesisGroupTest to be a tree dump test

This commit is contained in:
Andreas Dangel
2022-04-21 11:26:30 +02:00
parent 17ff1b7ffb
commit f5be685068
4 changed files with 670 additions and 12 deletions

View File

@ -4,29 +4,37 @@
package net.sourceforge.pmd.lang.plsql.ast;
import org.junit.Assert;
import org.junit.Test;
import net.sourceforge.pmd.lang.plsql.AbstractPLSQLParserTst;
import net.sourceforge.pmd.lang.ast.test.BaseParsingHelper;
import net.sourceforge.pmd.lang.ast.test.BaseTreeDumpTest;
import net.sourceforge.pmd.lang.ast.test.RelevantAttributePrinter;
import net.sourceforge.pmd.lang.plsql.PlsqlParsingHelper;
public class ParenthesisGroupTest extends AbstractPLSQLParserTst {
public class ParenthesisGroupTest extends BaseTreeDumpTest {
public ParenthesisGroupTest() {
super(new RelevantAttributePrinter(), ".pls");
}
@Override
public BaseParsingHelper<?, ?> getParser() {
return PlsqlParsingHelper.WITH_PROCESSING.withResourceContext(getClass());
}
@Test
public void parseParenthesisGroup0() {
ASTInput input = plsql.parseResource("ParenthesisGroup0.pls");
Assert.assertNotNull(input);
doTest("ParenthesisGroup0");
}
@Test
public void parseParenthesisGroup1() {
ASTInput input = plsql.parseResource("ParenthesisGroup1.pls");
Assert.assertNotNull(input);
doTest("ParenthesisGroup1");
}
@Test
public void parseParenthesisGroup2() {
ASTInput input = plsql.parseResource("ParenthesisGroup2.pls");
Assert.assertNotNull(input);
doTest("ParenthesisGroup2");
}
}

View File

@ -0,0 +1,250 @@
+- Input[@CanonicalImage = null, @ExcludedLinesCount = 0, @ExcludedRangesCount = 0, @Sourcecode = "CREATE OR REPLACE PROCEDURE EXAMPLE_PROCEDURE IS
--
CURSOR c_example IS
SELECT a.owner, u.object_name, p.aggregate
FROM (USER_OBJECTS u) INNER JOIN (ALL_OBJECTS a) ON
u.object_name = a.object_name AND u.object_type = a.object_type AND u.object_id = a.object_id
INNER JOIN (ALL_PROCEDURES p) ON
p.owner = a.owner AND p.object_name = a.object_name AND p.object_type = a.object_type
WHERE a.owner = USER;
--
BEGIN
--
FOR l_object IN c_example LOOP
--
DBMS_OUTPUT.Put_Line(l_object.owner);
DBMS_OUTPUT.Put_Line(l_object.object_name);
DBMS_OUTPUT.Put_Line(l_object.aggregate);
--
END LOOP;
--
END EXAMPLE_PROCEDURE;
"]
+- Global[@CanonicalImage = null]
+- ProgramUnit[@CanonicalImage = null, @MethodName = "EXAMPLE_PROCEDURE", @Name = "EXAMPLE_PROCEDURE", @ObjectName = null]
+- MethodDeclarator[@CanonicalImage = "EXAMPLE_PROCEDURE", @Image = "EXAMPLE_PROCEDURE", @ParameterCount = 1]
| +- ObjectNameDeclaration[@CanonicalImage = "EXAMPLE_PROCEDURE", @Image = "EXAMPLE_PROCEDURE"]
| +- ID[@CanonicalImage = "EXAMPLE_PROCEDURE", @Image = "EXAMPLE_PROCEDURE"]
+- DeclarativeSection[@CanonicalImage = null]
| +- DeclarativeUnit[@CanonicalImage = null]
| +- CursorSpecification[@CanonicalImage = null]
| +- CursorUnit[@CanonicalImage = "C_EXAMPLE", @Image = "c_example"]
| +- ID[@CanonicalImage = "C_EXAMPLE", @Image = "c_example"]
| +- SelectStatement[@All = false, @CanonicalImage = null, @Distinct = false, @Unique = false]
| +- SelectList[@CanonicalImage = null]
| | +- SqlExpression[@CanonicalImage = "A.OWNER", @Image = "a.owner"]
| | | +- PrimaryPrefix[@CanonicalImage = "A.OWNER", @Image = "a.owner", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "A.OWNER", @Image = "a.owner"]
| | | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | +- Column[@CanonicalImage = "OWNER", @Image = "owner"]
| | | +- ID[@CanonicalImage = "OWNER", @Image = "owner"]
| | +- SqlExpression[@CanonicalImage = "U.OBJECT_NAME", @Image = "u.object_name"]
| | | +- PrimaryPrefix[@CanonicalImage = "U.OBJECT_NAME", @Image = "u.object_name", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "U.OBJECT_NAME", @Image = "u.object_name"]
| | | +- TableName[@CanonicalImage = "U", @Image = "u"]
| | | | +- ID[@CanonicalImage = "U", @Image = "u"]
| | | +- Column[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | +- ID[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | +- SqlExpression[@CanonicalImage = "P.AGGREGATE", @Image = "p.aggregate"]
| | +- PrimaryPrefix[@CanonicalImage = "P.AGGREGATE", @Image = "p.aggregate", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "P.AGGREGATE", @Image = "p.aggregate"]
| | +- TableName[@CanonicalImage = "P", @Image = "p"]
| | | +- ID[@CanonicalImage = "P", @Image = "p"]
| | +- Column[@CanonicalImage = "AGGREGATE", @Image = "aggregate"]
| | +- ID[@CanonicalImage = "AGGREGATE", @Image = "aggregate"]
| | +- KEYWORD_UNRESERVED[@CanonicalImage = "AGGREGATE", @Image = "aggregate"]
| +- FromClause[@CanonicalImage = null]
| | +- JoinClause[@CanonicalImage = null]
| | +- TableReference[@CanonicalImage = null]
| | | +- TableName[@CanonicalImage = "USER_OBJECTS", @Image = "USER_OBJECTS"]
| | | | +- ID[@CanonicalImage = "USER_OBJECTS", @Image = "USER_OBJECTS"]
| | | +- TableAlias[@CanonicalImage = "U", @Image = "u"]
| | | | +- ID[@CanonicalImage = "U", @Image = "u"]
| | | +- TableAlias[@CanonicalImage = "INNER", @Image = "INNER"]
| | | +- ID[@CanonicalImage = "INNER", @Image = "INNER"]
| | | +- KEYWORD_UNRESERVED[@CanonicalImage = "INNER", @Image = "INNER"]
| | +- InnerCrossJoinClause[@CanonicalImage = null, @Cross = false, @Natural = false]
| | | +- TableReference[@CanonicalImage = null]
| | | | +- TableName[@CanonicalImage = "ALL_OBJECTS", @Image = "ALL_OBJECTS"]
| | | | | +- ID[@CanonicalImage = "ALL_OBJECTS", @Image = "ALL_OBJECTS"]
| | | | +- TableAlias[@CanonicalImage = "A", @Image = "a"]
| | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | +- ConditionalAndExpression[@CanonicalImage = "U.OBJECT_NAME = A.OBJECT_NAME AND U.OBJECT_TYPE = A.OBJECT_TYPE AND U.OBJECT_ID = A.OBJECT_ID", @Image = "u.object_name = a.object_name AND u.object_type = a.object_type AND u.object_id = a.object_id"]
| | | +- EqualityExpression[@CanonicalImage = "U.OBJECT_NAME = A.OBJECT_NAME", @Image = "u.object_name = a.object_name"]
| | | | +- PrimaryPrefix[@CanonicalImage = "U.OBJECT_NAME", @Image = "u.object_name", @SelfModifier = false]
| | | | | +- SimpleExpression[@CanonicalImage = "U.OBJECT_NAME", @Image = "u.object_name"]
| | | | | +- TableName[@CanonicalImage = "U", @Image = "u"]
| | | | | | +- ID[@CanonicalImage = "U", @Image = "u"]
| | | | | +- Column[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | | | +- ID[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | | +- PrimaryPrefix[@CanonicalImage = "A.OBJECT_NAME", @Image = "a.object_name", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "A.OBJECT_NAME", @Image = "a.object_name"]
| | | | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | | +- Column[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | | +- ID[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | +- EqualityExpression[@CanonicalImage = "U.OBJECT_TYPE = A.OBJECT_TYPE", @Image = "u.object_type = a.object_type"]
| | | | +- PrimaryPrefix[@CanonicalImage = "U.OBJECT_TYPE", @Image = "u.object_type", @SelfModifier = false]
| | | | | +- SimpleExpression[@CanonicalImage = "U.OBJECT_TYPE", @Image = "u.object_type"]
| | | | | +- TableName[@CanonicalImage = "U", @Image = "u"]
| | | | | | +- ID[@CanonicalImage = "U", @Image = "u"]
| | | | | +- Column[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | | | | +- ID[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | | | +- PrimaryPrefix[@CanonicalImage = "A.OBJECT_TYPE", @Image = "a.object_type", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "A.OBJECT_TYPE", @Image = "a.object_type"]
| | | | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | | +- Column[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | | | +- ID[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | | +- EqualityExpression[@CanonicalImage = "U.OBJECT_ID = A.OBJECT_ID", @Image = "u.object_id = a.object_id"]
| | | +- PrimaryPrefix[@CanonicalImage = "U.OBJECT_ID", @Image = "u.object_id", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "U.OBJECT_ID", @Image = "u.object_id"]
| | | | +- TableName[@CanonicalImage = "U", @Image = "u"]
| | | | | +- ID[@CanonicalImage = "U", @Image = "u"]
| | | | +- Column[@CanonicalImage = "OBJECT_ID", @Image = "object_id"]
| | | | +- ID[@CanonicalImage = "OBJECT_ID", @Image = "object_id"]
| | | +- PrimaryPrefix[@CanonicalImage = "A.OBJECT_ID", @Image = "a.object_id", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "A.OBJECT_ID", @Image = "a.object_id"]
| | | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | +- Column[@CanonicalImage = "OBJECT_ID", @Image = "object_id"]
| | | +- ID[@CanonicalImage = "OBJECT_ID", @Image = "object_id"]
| | +- InnerCrossJoinClause[@CanonicalImage = null, @Cross = false, @Natural = false]
| | +- TableReference[@CanonicalImage = null]
| | | +- TableName[@CanonicalImage = "ALL_PROCEDURES", @Image = "ALL_PROCEDURES"]
| | | | +- ID[@CanonicalImage = "ALL_PROCEDURES", @Image = "ALL_PROCEDURES"]
| | | +- TableAlias[@CanonicalImage = "P", @Image = "p"]
| | | +- ID[@CanonicalImage = "P", @Image = "p"]
| | +- ConditionalAndExpression[@CanonicalImage = "P.OWNER = A.OWNER AND P.OBJECT_NAME = A.OBJECT_NAME AND P.OBJECT_TYPE = A.OBJECT_TYPE", @Image = "p.owner = a.owner AND p.object_name = a.object_name AND p.object_type = a.object_type"]
| | +- EqualityExpression[@CanonicalImage = "P.OWNER = A.OWNER", @Image = "p.owner = a.owner"]
| | | +- PrimaryPrefix[@CanonicalImage = "P.OWNER", @Image = "p.owner", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "P.OWNER", @Image = "p.owner"]
| | | | +- TableName[@CanonicalImage = "P", @Image = "p"]
| | | | | +- ID[@CanonicalImage = "P", @Image = "p"]
| | | | +- Column[@CanonicalImage = "OWNER", @Image = "owner"]
| | | | +- ID[@CanonicalImage = "OWNER", @Image = "owner"]
| | | +- PrimaryPrefix[@CanonicalImage = "A.OWNER", @Image = "a.owner", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "A.OWNER", @Image = "a.owner"]
| | | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | +- Column[@CanonicalImage = "OWNER", @Image = "owner"]
| | | +- ID[@CanonicalImage = "OWNER", @Image = "owner"]
| | +- EqualityExpression[@CanonicalImage = "P.OBJECT_NAME = A.OBJECT_NAME", @Image = "p.object_name = a.object_name"]
| | | +- PrimaryPrefix[@CanonicalImage = "P.OBJECT_NAME", @Image = "p.object_name", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "P.OBJECT_NAME", @Image = "p.object_name"]
| | | | +- TableName[@CanonicalImage = "P", @Image = "p"]
| | | | | +- ID[@CanonicalImage = "P", @Image = "p"]
| | | | +- Column[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | | +- ID[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | +- PrimaryPrefix[@CanonicalImage = "A.OBJECT_NAME", @Image = "a.object_name", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "A.OBJECT_NAME", @Image = "a.object_name"]
| | | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | +- Column[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | +- ID[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | +- EqualityExpression[@CanonicalImage = "P.OBJECT_TYPE = A.OBJECT_TYPE", @Image = "p.object_type = a.object_type"]
| | +- PrimaryPrefix[@CanonicalImage = "P.OBJECT_TYPE", @Image = "p.object_type", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "P.OBJECT_TYPE", @Image = "p.object_type"]
| | | +- TableName[@CanonicalImage = "P", @Image = "p"]
| | | | +- ID[@CanonicalImage = "P", @Image = "p"]
| | | +- Column[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | | +- ID[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | +- PrimaryPrefix[@CanonicalImage = "A.OBJECT_TYPE", @Image = "a.object_type", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "A.OBJECT_TYPE", @Image = "a.object_type"]
| | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | +- Column[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | +- ID[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| +- WhereClause[@CanonicalImage = null]
| +- Condition[@CanonicalImage = null]
| +- CompoundCondition[@CanonicalImage = null, @Type = null]
| +- ComparisonCondition[@CanonicalImage = null, @Operator = "="]
| +- SqlExpression[@CanonicalImage = "A.OWNER", @Image = "a.owner"]
| | +- PrimaryPrefix[@CanonicalImage = "A.OWNER", @Image = "a.owner", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "A.OWNER", @Image = "a.owner"]
| | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | +- Column[@CanonicalImage = "OWNER", @Image = "owner"]
| | +- ID[@CanonicalImage = "OWNER", @Image = "owner"]
| +- SqlExpression[@CanonicalImage = "USER", @Image = "USER"]
| +- PrimaryPrefix[@CanonicalImage = "USER", @Image = "USER", @SelfModifier = false]
| +- SimpleExpression[@CanonicalImage = "USER", @Image = "USER"]
| +- Column[@CanonicalImage = "USER", @Image = "USER"]
| +- ID[@CanonicalImage = "USER", @Image = "USER"]
| +- KEYWORD_UNRESERVED[@CanonicalImage = "USER", @Image = "USER"]
+- Statement[@CanonicalImage = null]
| +- UnlabelledStatement[@CanonicalImage = null]
| +- ForStatement[@CanonicalImage = null]
| +- ForIndex[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| | +- ID[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| +- Expression[@CanonicalImage = "C_EXAMPLE", @Image = "c_example"]
| | +- PrimaryPrefix[@CanonicalImage = "C_EXAMPLE", @Image = "c_example", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "C_EXAMPLE", @Image = "c_example"]
| | +- Column[@CanonicalImage = "C_EXAMPLE", @Image = "c_example"]
| | +- ID[@CanonicalImage = "C_EXAMPLE", @Image = "c_example"]
| +- Statement[@CanonicalImage = null]
| | +- UnlabelledStatement[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | +- PrimaryPrefix[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line", @SelfModifier = false]
| | +- FunctionCall[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | +- FunctionName[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | | +- ID[@CanonicalImage = "DBMS_OUTPUT", @Image = "DBMS_OUTPUT"]
| | | +- ID[@CanonicalImage = "PUT_LINE", @Image = "Put_Line"]
| | +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
| | +- ArgumentList[@CanonicalImage = null]
| | +- Argument[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "L_OBJECT.OWNER", @Image = "l_object.owner"]
| | +- PrimaryPrefix[@CanonicalImage = "L_OBJECT.OWNER", @Image = "l_object.owner", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "L_OBJECT.OWNER", @Image = "l_object.owner"]
| | +- TableName[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| | | +- ID[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| | +- Column[@CanonicalImage = "OWNER", @Image = "owner"]
| | +- ID[@CanonicalImage = "OWNER", @Image = "owner"]
| +- Statement[@CanonicalImage = null]
| | +- UnlabelledStatement[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | +- PrimaryPrefix[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line", @SelfModifier = false]
| | +- FunctionCall[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | +- FunctionName[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | | +- ID[@CanonicalImage = "DBMS_OUTPUT", @Image = "DBMS_OUTPUT"]
| | | +- ID[@CanonicalImage = "PUT_LINE", @Image = "Put_Line"]
| | +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
| | +- ArgumentList[@CanonicalImage = null]
| | +- Argument[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "L_OBJECT.OBJECT_NAME", @Image = "l_object.object_name"]
| | +- PrimaryPrefix[@CanonicalImage = "L_OBJECT.OBJECT_NAME", @Image = "l_object.object_name", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "L_OBJECT.OBJECT_NAME", @Image = "l_object.object_name"]
| | +- TableName[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| | | +- ID[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| | +- Column[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | +- ID[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| +- Statement[@CanonicalImage = null]
| +- UnlabelledStatement[@CanonicalImage = null]
| +- Expression[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| +- PrimaryPrefix[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line", @SelfModifier = false]
| +- FunctionCall[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| +- FunctionName[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | +- ID[@CanonicalImage = "DBMS_OUTPUT", @Image = "DBMS_OUTPUT"]
| | +- ID[@CanonicalImage = "PUT_LINE", @Image = "Put_Line"]
| +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
| +- ArgumentList[@CanonicalImage = null]
| +- Argument[@CanonicalImage = null]
| +- Expression[@CanonicalImage = "L_OBJECT.AGGREGATE", @Image = "l_object.aggregate"]
| +- PrimaryPrefix[@CanonicalImage = "L_OBJECT.AGGREGATE", @Image = "l_object.aggregate", @SelfModifier = false]
| +- SimpleExpression[@CanonicalImage = "L_OBJECT.AGGREGATE", @Image = "l_object.aggregate"]
| +- TableName[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| | +- ID[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| +- Column[@CanonicalImage = "AGGREGATE", @Image = "aggregate"]
| +- ID[@CanonicalImage = "AGGREGATE", @Image = "aggregate"]
| +- KEYWORD_UNRESERVED[@CanonicalImage = "AGGREGATE", @Image = "aggregate"]
+- ID[@CanonicalImage = "EXAMPLE_PROCEDURE", @Image = "EXAMPLE_PROCEDURE"]

View File

@ -0,0 +1,250 @@
+- Input[@CanonicalImage = null, @ExcludedLinesCount = 0, @ExcludedRangesCount = 0, @Sourcecode = "CREATE OR REPLACE PROCEDURE EXAMPLE_PROCEDURE IS
--
CURSOR c_example IS
SELECT a.owner, u.object_name, p.aggregate
FROM (((USER_OBJECTS u) INNER JOIN (ALL_OBJECTS a) ON
u.object_name = a.object_name AND u.object_type = a.object_type AND u.object_id = a.object_id)
INNER JOIN (ALL_PROCEDURES p) ON
p.owner = a.owner AND p.object_name = a.object_name AND p.object_type = a.object_type)
WHERE a.owner = USER;
--
BEGIN
--
FOR l_object IN c_example LOOP
--
DBMS_OUTPUT.Put_Line(l_object.owner);
DBMS_OUTPUT.Put_Line(l_object.object_name);
DBMS_OUTPUT.Put_Line(l_object.aggregate);
--
END LOOP;
--
END EXAMPLE_PROCEDURE;
"]
+- Global[@CanonicalImage = null]
+- ProgramUnit[@CanonicalImage = null, @MethodName = "EXAMPLE_PROCEDURE", @Name = "EXAMPLE_PROCEDURE", @ObjectName = null]
+- MethodDeclarator[@CanonicalImage = "EXAMPLE_PROCEDURE", @Image = "EXAMPLE_PROCEDURE", @ParameterCount = 1]
| +- ObjectNameDeclaration[@CanonicalImage = "EXAMPLE_PROCEDURE", @Image = "EXAMPLE_PROCEDURE"]
| +- ID[@CanonicalImage = "EXAMPLE_PROCEDURE", @Image = "EXAMPLE_PROCEDURE"]
+- DeclarativeSection[@CanonicalImage = null]
| +- DeclarativeUnit[@CanonicalImage = null]
| +- CursorSpecification[@CanonicalImage = null]
| +- CursorUnit[@CanonicalImage = "C_EXAMPLE", @Image = "c_example"]
| +- ID[@CanonicalImage = "C_EXAMPLE", @Image = "c_example"]
| +- SelectStatement[@All = false, @CanonicalImage = null, @Distinct = false, @Unique = false]
| +- SelectList[@CanonicalImage = null]
| | +- SqlExpression[@CanonicalImage = "A.OWNER", @Image = "a.owner"]
| | | +- PrimaryPrefix[@CanonicalImage = "A.OWNER", @Image = "a.owner", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "A.OWNER", @Image = "a.owner"]
| | | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | +- Column[@CanonicalImage = "OWNER", @Image = "owner"]
| | | +- ID[@CanonicalImage = "OWNER", @Image = "owner"]
| | +- SqlExpression[@CanonicalImage = "U.OBJECT_NAME", @Image = "u.object_name"]
| | | +- PrimaryPrefix[@CanonicalImage = "U.OBJECT_NAME", @Image = "u.object_name", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "U.OBJECT_NAME", @Image = "u.object_name"]
| | | +- TableName[@CanonicalImage = "U", @Image = "u"]
| | | | +- ID[@CanonicalImage = "U", @Image = "u"]
| | | +- Column[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | +- ID[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | +- SqlExpression[@CanonicalImage = "P.AGGREGATE", @Image = "p.aggregate"]
| | +- PrimaryPrefix[@CanonicalImage = "P.AGGREGATE", @Image = "p.aggregate", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "P.AGGREGATE", @Image = "p.aggregate"]
| | +- TableName[@CanonicalImage = "P", @Image = "p"]
| | | +- ID[@CanonicalImage = "P", @Image = "p"]
| | +- Column[@CanonicalImage = "AGGREGATE", @Image = "aggregate"]
| | +- ID[@CanonicalImage = "AGGREGATE", @Image = "aggregate"]
| | +- KEYWORD_UNRESERVED[@CanonicalImage = "AGGREGATE", @Image = "aggregate"]
| +- FromClause[@CanonicalImage = null]
| | +- TableReference[@CanonicalImage = null]
| | +- JoinClause[@CanonicalImage = null]
| | +- TableReference[@CanonicalImage = null]
| | | +- JoinClause[@CanonicalImage = null]
| | | +- TableReference[@CanonicalImage = null]
| | | | +- TableName[@CanonicalImage = "USER_OBJECTS", @Image = "USER_OBJECTS"]
| | | | | +- ID[@CanonicalImage = "USER_OBJECTS", @Image = "USER_OBJECTS"]
| | | | +- TableAlias[@CanonicalImage = "U", @Image = "u"]
| | | | +- ID[@CanonicalImage = "U", @Image = "u"]
| | | +- InnerCrossJoinClause[@CanonicalImage = null, @Cross = false, @Natural = false]
| | | +- TableReference[@CanonicalImage = null]
| | | | +- TableName[@CanonicalImage = "ALL_OBJECTS", @Image = "ALL_OBJECTS"]
| | | | | +- ID[@CanonicalImage = "ALL_OBJECTS", @Image = "ALL_OBJECTS"]
| | | | +- TableAlias[@CanonicalImage = "A", @Image = "a"]
| | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | +- ConditionalAndExpression[@CanonicalImage = "U.OBJECT_NAME = A.OBJECT_NAME AND U.OBJECT_TYPE = A.OBJECT_TYPE AND U.OBJECT_ID = A.OBJECT_ID", @Image = "u.object_name = a.object_name AND u.object_type = a.object_type AND u.object_id = a.object_id"]
| | | +- EqualityExpression[@CanonicalImage = "U.OBJECT_NAME = A.OBJECT_NAME", @Image = "u.object_name = a.object_name"]
| | | | +- PrimaryPrefix[@CanonicalImage = "U.OBJECT_NAME", @Image = "u.object_name", @SelfModifier = false]
| | | | | +- SimpleExpression[@CanonicalImage = "U.OBJECT_NAME", @Image = "u.object_name"]
| | | | | +- TableName[@CanonicalImage = "U", @Image = "u"]
| | | | | | +- ID[@CanonicalImage = "U", @Image = "u"]
| | | | | +- Column[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | | | +- ID[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | | +- PrimaryPrefix[@CanonicalImage = "A.OBJECT_NAME", @Image = "a.object_name", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "A.OBJECT_NAME", @Image = "a.object_name"]
| | | | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | | +- Column[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | | +- ID[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | +- EqualityExpression[@CanonicalImage = "U.OBJECT_TYPE = A.OBJECT_TYPE", @Image = "u.object_type = a.object_type"]
| | | | +- PrimaryPrefix[@CanonicalImage = "U.OBJECT_TYPE", @Image = "u.object_type", @SelfModifier = false]
| | | | | +- SimpleExpression[@CanonicalImage = "U.OBJECT_TYPE", @Image = "u.object_type"]
| | | | | +- TableName[@CanonicalImage = "U", @Image = "u"]
| | | | | | +- ID[@CanonicalImage = "U", @Image = "u"]
| | | | | +- Column[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | | | | +- ID[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | | | +- PrimaryPrefix[@CanonicalImage = "A.OBJECT_TYPE", @Image = "a.object_type", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "A.OBJECT_TYPE", @Image = "a.object_type"]
| | | | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | | +- Column[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | | | +- ID[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | | +- EqualityExpression[@CanonicalImage = "U.OBJECT_ID = A.OBJECT_ID", @Image = "u.object_id = a.object_id"]
| | | +- PrimaryPrefix[@CanonicalImage = "U.OBJECT_ID", @Image = "u.object_id", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "U.OBJECT_ID", @Image = "u.object_id"]
| | | | +- TableName[@CanonicalImage = "U", @Image = "u"]
| | | | | +- ID[@CanonicalImage = "U", @Image = "u"]
| | | | +- Column[@CanonicalImage = "OBJECT_ID", @Image = "object_id"]
| | | | +- ID[@CanonicalImage = "OBJECT_ID", @Image = "object_id"]
| | | +- PrimaryPrefix[@CanonicalImage = "A.OBJECT_ID", @Image = "a.object_id", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "A.OBJECT_ID", @Image = "a.object_id"]
| | | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | +- Column[@CanonicalImage = "OBJECT_ID", @Image = "object_id"]
| | | +- ID[@CanonicalImage = "OBJECT_ID", @Image = "object_id"]
| | +- InnerCrossJoinClause[@CanonicalImage = null, @Cross = false, @Natural = false]
| | +- TableReference[@CanonicalImage = null]
| | | +- TableName[@CanonicalImage = "ALL_PROCEDURES", @Image = "ALL_PROCEDURES"]
| | | | +- ID[@CanonicalImage = "ALL_PROCEDURES", @Image = "ALL_PROCEDURES"]
| | | +- TableAlias[@CanonicalImage = "P", @Image = "p"]
| | | +- ID[@CanonicalImage = "P", @Image = "p"]
| | +- ConditionalAndExpression[@CanonicalImage = "P.OWNER = A.OWNER AND P.OBJECT_NAME = A.OBJECT_NAME AND P.OBJECT_TYPE = A.OBJECT_TYPE", @Image = "p.owner = a.owner AND p.object_name = a.object_name AND p.object_type = a.object_type"]
| | +- EqualityExpression[@CanonicalImage = "P.OWNER = A.OWNER", @Image = "p.owner = a.owner"]
| | | +- PrimaryPrefix[@CanonicalImage = "P.OWNER", @Image = "p.owner", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "P.OWNER", @Image = "p.owner"]
| | | | +- TableName[@CanonicalImage = "P", @Image = "p"]
| | | | | +- ID[@CanonicalImage = "P", @Image = "p"]
| | | | +- Column[@CanonicalImage = "OWNER", @Image = "owner"]
| | | | +- ID[@CanonicalImage = "OWNER", @Image = "owner"]
| | | +- PrimaryPrefix[@CanonicalImage = "A.OWNER", @Image = "a.owner", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "A.OWNER", @Image = "a.owner"]
| | | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | +- Column[@CanonicalImage = "OWNER", @Image = "owner"]
| | | +- ID[@CanonicalImage = "OWNER", @Image = "owner"]
| | +- EqualityExpression[@CanonicalImage = "P.OBJECT_NAME = A.OBJECT_NAME", @Image = "p.object_name = a.object_name"]
| | | +- PrimaryPrefix[@CanonicalImage = "P.OBJECT_NAME", @Image = "p.object_name", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "P.OBJECT_NAME", @Image = "p.object_name"]
| | | | +- TableName[@CanonicalImage = "P", @Image = "p"]
| | | | | +- ID[@CanonicalImage = "P", @Image = "p"]
| | | | +- Column[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | | +- ID[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | +- PrimaryPrefix[@CanonicalImage = "A.OBJECT_NAME", @Image = "a.object_name", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "A.OBJECT_NAME", @Image = "a.object_name"]
| | | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | | +- Column[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | | +- ID[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | +- EqualityExpression[@CanonicalImage = "P.OBJECT_TYPE = A.OBJECT_TYPE", @Image = "p.object_type = a.object_type"]
| | +- PrimaryPrefix[@CanonicalImage = "P.OBJECT_TYPE", @Image = "p.object_type", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "P.OBJECT_TYPE", @Image = "p.object_type"]
| | | +- TableName[@CanonicalImage = "P", @Image = "p"]
| | | | +- ID[@CanonicalImage = "P", @Image = "p"]
| | | +- Column[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | | +- ID[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | +- PrimaryPrefix[@CanonicalImage = "A.OBJECT_TYPE", @Image = "a.object_type", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "A.OBJECT_TYPE", @Image = "a.object_type"]
| | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | +- Column[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| | +- ID[@CanonicalImage = "OBJECT_TYPE", @Image = "object_type"]
| +- WhereClause[@CanonicalImage = null]
| +- Condition[@CanonicalImage = null]
| +- CompoundCondition[@CanonicalImage = null, @Type = null]
| +- ComparisonCondition[@CanonicalImage = null, @Operator = "="]
| +- SqlExpression[@CanonicalImage = "A.OWNER", @Image = "a.owner"]
| | +- PrimaryPrefix[@CanonicalImage = "A.OWNER", @Image = "a.owner", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "A.OWNER", @Image = "a.owner"]
| | +- TableName[@CanonicalImage = "A", @Image = "a"]
| | | +- ID[@CanonicalImage = "A", @Image = "a"]
| | | +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
| | +- Column[@CanonicalImage = "OWNER", @Image = "owner"]
| | +- ID[@CanonicalImage = "OWNER", @Image = "owner"]
| +- SqlExpression[@CanonicalImage = "USER", @Image = "USER"]
| +- PrimaryPrefix[@CanonicalImage = "USER", @Image = "USER", @SelfModifier = false]
| +- SimpleExpression[@CanonicalImage = "USER", @Image = "USER"]
| +- Column[@CanonicalImage = "USER", @Image = "USER"]
| +- ID[@CanonicalImage = "USER", @Image = "USER"]
| +- KEYWORD_UNRESERVED[@CanonicalImage = "USER", @Image = "USER"]
+- Statement[@CanonicalImage = null]
| +- UnlabelledStatement[@CanonicalImage = null]
| +- ForStatement[@CanonicalImage = null]
| +- ForIndex[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| | +- ID[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| +- Expression[@CanonicalImage = "C_EXAMPLE", @Image = "c_example"]
| | +- PrimaryPrefix[@CanonicalImage = "C_EXAMPLE", @Image = "c_example", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "C_EXAMPLE", @Image = "c_example"]
| | +- Column[@CanonicalImage = "C_EXAMPLE", @Image = "c_example"]
| | +- ID[@CanonicalImage = "C_EXAMPLE", @Image = "c_example"]
| +- Statement[@CanonicalImage = null]
| | +- UnlabelledStatement[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | +- PrimaryPrefix[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line", @SelfModifier = false]
| | +- FunctionCall[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | +- FunctionName[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | | +- ID[@CanonicalImage = "DBMS_OUTPUT", @Image = "DBMS_OUTPUT"]
| | | +- ID[@CanonicalImage = "PUT_LINE", @Image = "Put_Line"]
| | +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
| | +- ArgumentList[@CanonicalImage = null]
| | +- Argument[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "L_OBJECT.OWNER", @Image = "l_object.owner"]
| | +- PrimaryPrefix[@CanonicalImage = "L_OBJECT.OWNER", @Image = "l_object.owner", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "L_OBJECT.OWNER", @Image = "l_object.owner"]
| | +- TableName[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| | | +- ID[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| | +- Column[@CanonicalImage = "OWNER", @Image = "owner"]
| | +- ID[@CanonicalImage = "OWNER", @Image = "owner"]
| +- Statement[@CanonicalImage = null]
| | +- UnlabelledStatement[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | +- PrimaryPrefix[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line", @SelfModifier = false]
| | +- FunctionCall[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | +- FunctionName[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | | +- ID[@CanonicalImage = "DBMS_OUTPUT", @Image = "DBMS_OUTPUT"]
| | | +- ID[@CanonicalImage = "PUT_LINE", @Image = "Put_Line"]
| | +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
| | +- ArgumentList[@CanonicalImage = null]
| | +- Argument[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "L_OBJECT.OBJECT_NAME", @Image = "l_object.object_name"]
| | +- PrimaryPrefix[@CanonicalImage = "L_OBJECT.OBJECT_NAME", @Image = "l_object.object_name", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "L_OBJECT.OBJECT_NAME", @Image = "l_object.object_name"]
| | +- TableName[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| | | +- ID[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| | +- Column[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| | +- ID[@CanonicalImage = "OBJECT_NAME", @Image = "object_name"]
| +- Statement[@CanonicalImage = null]
| +- UnlabelledStatement[@CanonicalImage = null]
| +- Expression[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| +- PrimaryPrefix[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line", @SelfModifier = false]
| +- FunctionCall[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| +- FunctionName[@CanonicalImage = "DBMS_OUTPUT.PUT_LINE", @Image = "DBMS_OUTPUT.Put_Line"]
| | +- ID[@CanonicalImage = "DBMS_OUTPUT", @Image = "DBMS_OUTPUT"]
| | +- ID[@CanonicalImage = "PUT_LINE", @Image = "Put_Line"]
| +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
| +- ArgumentList[@CanonicalImage = null]
| +- Argument[@CanonicalImage = null]
| +- Expression[@CanonicalImage = "L_OBJECT.AGGREGATE", @Image = "l_object.aggregate"]
| +- PrimaryPrefix[@CanonicalImage = "L_OBJECT.AGGREGATE", @Image = "l_object.aggregate", @SelfModifier = false]
| +- SimpleExpression[@CanonicalImage = "L_OBJECT.AGGREGATE", @Image = "l_object.aggregate"]
| +- TableName[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| | +- ID[@CanonicalImage = "L_OBJECT", @Image = "l_object"]
| +- Column[@CanonicalImage = "AGGREGATE", @Image = "aggregate"]
| +- ID[@CanonicalImage = "AGGREGATE", @Image = "aggregate"]
| +- KEYWORD_UNRESERVED[@CanonicalImage = "AGGREGATE", @Image = "aggregate"]
+- ID[@CanonicalImage = "EXAMPLE_PROCEDURE", @Image = "EXAMPLE_PROCEDURE"]

View File

@ -0,0 +1,150 @@
+- Input[@CanonicalImage = null, @ExcludedLinesCount = 0, @ExcludedRangesCount = 0, @Sourcecode = "CREATE OR REPLACE PROCEDURE TEST_PROCEDURE IS
--
CURSOR c_test IS
SELECT si.sid, sn.name, sa.age, ss.score, sp.parent
FROM ((((STUDENT_INFO si) INNER JOIN (STUDENT_AGE sa) on si.sid = sa.sid)
INNER JOIN
(STUDENT_SCORE ss) on si.sid = sp.sid)
INNER JOIN
(STUDENT_PARENT sp) on si.sid = sp.sid)
WHERE si.sid = '114514';
--
BEGIN
--
--
END EXAMPLE_PROCEDURE;
"]
+- Global[@CanonicalImage = null]
+- ProgramUnit[@CanonicalImage = null, @MethodName = "TEST_PROCEDURE", @Name = "TEST_PROCEDURE", @ObjectName = null]
+- MethodDeclarator[@CanonicalImage = "TEST_PROCEDURE", @Image = "TEST_PROCEDURE", @ParameterCount = 1]
| +- ObjectNameDeclaration[@CanonicalImage = "TEST_PROCEDURE", @Image = "TEST_PROCEDURE"]
| +- ID[@CanonicalImage = "TEST_PROCEDURE", @Image = "TEST_PROCEDURE"]
+- DeclarativeSection[@CanonicalImage = null]
| +- DeclarativeUnit[@CanonicalImage = null]
| +- CursorSpecification[@CanonicalImage = null]
| +- CursorUnit[@CanonicalImage = "C_TEST", @Image = "c_test"]
| +- ID[@CanonicalImage = "C_TEST", @Image = "c_test"]
| +- SelectStatement[@All = false, @CanonicalImage = null, @Distinct = false, @Unique = false]
| +- SelectList[@CanonicalImage = null]
| | +- SqlExpression[@CanonicalImage = "SI.SID", @Image = "si.sid"]
| | | +- PrimaryPrefix[@CanonicalImage = "SI.SID", @Image = "si.sid", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "SI.SID", @Image = "si.sid"]
| | | +- TableName[@CanonicalImage = "SI", @Image = "si"]
| | | | +- ID[@CanonicalImage = "SI", @Image = "si"]
| | | +- Column[@CanonicalImage = "SID", @Image = "sid"]
| | | +- ID[@CanonicalImage = "SID", @Image = "sid"]
| | +- SqlExpression[@CanonicalImage = "SN.NAME", @Image = "sn.name"]
| | | +- PrimaryPrefix[@CanonicalImage = "SN.NAME", @Image = "sn.name", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "SN.NAME", @Image = "sn.name"]
| | | +- TableName[@CanonicalImage = "SN", @Image = "sn"]
| | | | +- ID[@CanonicalImage = "SN", @Image = "sn"]
| | | +- Column[@CanonicalImage = "NAME", @Image = "name"]
| | | +- ID[@CanonicalImage = "NAME", @Image = "name"]
| | | +- KEYWORD_UNRESERVED[@CanonicalImage = "NAME", @Image = "name"]
| | +- SqlExpression[@CanonicalImage = "SA.AGE", @Image = "sa.age"]
| | | +- PrimaryPrefix[@CanonicalImage = "SA.AGE", @Image = "sa.age", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "SA.AGE", @Image = "sa.age"]
| | | +- TableName[@CanonicalImage = "SA", @Image = "sa"]
| | | | +- ID[@CanonicalImage = "SA", @Image = "sa"]
| | | +- Column[@CanonicalImage = "AGE", @Image = "age"]
| | | +- ID[@CanonicalImage = "AGE", @Image = "age"]
| | +- SqlExpression[@CanonicalImage = "SS.SCORE", @Image = "ss.score"]
| | | +- PrimaryPrefix[@CanonicalImage = "SS.SCORE", @Image = "ss.score", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "SS.SCORE", @Image = "ss.score"]
| | | +- TableName[@CanonicalImage = "SS", @Image = "ss"]
| | | | +- ID[@CanonicalImage = "SS", @Image = "ss"]
| | | +- Column[@CanonicalImage = "SCORE", @Image = "score"]
| | | +- ID[@CanonicalImage = "SCORE", @Image = "score"]
| | +- SqlExpression[@CanonicalImage = "SP.PARENT", @Image = "sp.parent"]
| | +- PrimaryPrefix[@CanonicalImage = "SP.PARENT", @Image = "sp.parent", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "SP.PARENT", @Image = "sp.parent"]
| | +- TableName[@CanonicalImage = "SP", @Image = "sp"]
| | | +- ID[@CanonicalImage = "SP", @Image = "sp"]
| | +- Column[@CanonicalImage = "PARENT", @Image = "parent"]
| | +- ID[@CanonicalImage = "PARENT", @Image = "parent"]
| | +- KEYWORD_UNRESERVED[@CanonicalImage = "PARENT", @Image = "parent"]
| +- FromClause[@CanonicalImage = null]
| | +- TableReference[@CanonicalImage = null]
| | +- JoinClause[@CanonicalImage = null]
| | +- TableReference[@CanonicalImage = null]
| | | +- JoinClause[@CanonicalImage = null]
| | | +- TableReference[@CanonicalImage = null]
| | | | +- JoinClause[@CanonicalImage = null]
| | | | +- TableReference[@CanonicalImage = null]
| | | | | +- TableName[@CanonicalImage = "STUDENT_INFO", @Image = "STUDENT_INFO"]
| | | | | | +- ID[@CanonicalImage = "STUDENT_INFO", @Image = "STUDENT_INFO"]
| | | | | +- TableAlias[@CanonicalImage = "SI", @Image = "si"]
| | | | | +- ID[@CanonicalImage = "SI", @Image = "si"]
| | | | +- InnerCrossJoinClause[@CanonicalImage = null, @Cross = false, @Natural = false]
| | | | +- TableReference[@CanonicalImage = null]
| | | | | +- TableName[@CanonicalImage = "STUDENT_AGE", @Image = "STUDENT_AGE"]
| | | | | | +- ID[@CanonicalImage = "STUDENT_AGE", @Image = "STUDENT_AGE"]
| | | | | +- TableAlias[@CanonicalImage = "SA", @Image = "sa"]
| | | | | +- ID[@CanonicalImage = "SA", @Image = "sa"]
| | | | +- EqualityExpression[@CanonicalImage = "SI.SID = SA.SID", @Image = "si.sid = sa.sid"]
| | | | +- PrimaryPrefix[@CanonicalImage = "SI.SID", @Image = "si.sid", @SelfModifier = false]
| | | | | +- SimpleExpression[@CanonicalImage = "SI.SID", @Image = "si.sid"]
| | | | | +- TableName[@CanonicalImage = "SI", @Image = "si"]
| | | | | | +- ID[@CanonicalImage = "SI", @Image = "si"]
| | | | | +- Column[@CanonicalImage = "SID", @Image = "sid"]
| | | | | +- ID[@CanonicalImage = "SID", @Image = "sid"]
| | | | +- PrimaryPrefix[@CanonicalImage = "SA.SID", @Image = "sa.sid", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "SA.SID", @Image = "sa.sid"]
| | | | +- TableName[@CanonicalImage = "SA", @Image = "sa"]
| | | | | +- ID[@CanonicalImage = "SA", @Image = "sa"]
| | | | +- Column[@CanonicalImage = "SID", @Image = "sid"]
| | | | +- ID[@CanonicalImage = "SID", @Image = "sid"]
| | | +- InnerCrossJoinClause[@CanonicalImage = null, @Cross = false, @Natural = false]
| | | +- TableReference[@CanonicalImage = null]
| | | | +- TableName[@CanonicalImage = "STUDENT_SCORE", @Image = "STUDENT_SCORE"]
| | | | | +- ID[@CanonicalImage = "STUDENT_SCORE", @Image = "STUDENT_SCORE"]
| | | | +- TableAlias[@CanonicalImage = "SS", @Image = "ss"]
| | | | +- ID[@CanonicalImage = "SS", @Image = "ss"]
| | | +- EqualityExpression[@CanonicalImage = "SI.SID = SP.SID", @Image = "si.sid = sp.sid"]
| | | +- PrimaryPrefix[@CanonicalImage = "SI.SID", @Image = "si.sid", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "SI.SID", @Image = "si.sid"]
| | | | +- TableName[@CanonicalImage = "SI", @Image = "si"]
| | | | | +- ID[@CanonicalImage = "SI", @Image = "si"]
| | | | +- Column[@CanonicalImage = "SID", @Image = "sid"]
| | | | +- ID[@CanonicalImage = "SID", @Image = "sid"]
| | | +- PrimaryPrefix[@CanonicalImage = "SP.SID", @Image = "sp.sid", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "SP.SID", @Image = "sp.sid"]
| | | +- TableName[@CanonicalImage = "SP", @Image = "sp"]
| | | | +- ID[@CanonicalImage = "SP", @Image = "sp"]
| | | +- Column[@CanonicalImage = "SID", @Image = "sid"]
| | | +- ID[@CanonicalImage = "SID", @Image = "sid"]
| | +- InnerCrossJoinClause[@CanonicalImage = null, @Cross = false, @Natural = false]
| | +- TableReference[@CanonicalImage = null]
| | | +- TableName[@CanonicalImage = "STUDENT_PARENT", @Image = "STUDENT_PARENT"]
| | | | +- ID[@CanonicalImage = "STUDENT_PARENT", @Image = "STUDENT_PARENT"]
| | | +- TableAlias[@CanonicalImage = "SP", @Image = "sp"]
| | | +- ID[@CanonicalImage = "SP", @Image = "sp"]
| | +- EqualityExpression[@CanonicalImage = "SI.SID = SP.SID", @Image = "si.sid = sp.sid"]
| | +- PrimaryPrefix[@CanonicalImage = "SI.SID", @Image = "si.sid", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "SI.SID", @Image = "si.sid"]
| | | +- TableName[@CanonicalImage = "SI", @Image = "si"]
| | | | +- ID[@CanonicalImage = "SI", @Image = "si"]
| | | +- Column[@CanonicalImage = "SID", @Image = "sid"]
| | | +- ID[@CanonicalImage = "SID", @Image = "sid"]
| | +- PrimaryPrefix[@CanonicalImage = "SP.SID", @Image = "sp.sid", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "SP.SID", @Image = "sp.sid"]
| | +- TableName[@CanonicalImage = "SP", @Image = "sp"]
| | | +- ID[@CanonicalImage = "SP", @Image = "sp"]
| | +- Column[@CanonicalImage = "SID", @Image = "sid"]
| | +- ID[@CanonicalImage = "SID", @Image = "sid"]
| +- WhereClause[@CanonicalImage = null]
| +- Condition[@CanonicalImage = null]
| +- CompoundCondition[@CanonicalImage = null, @Type = null]
| +- ComparisonCondition[@CanonicalImage = null, @Operator = "="]
| +- SqlExpression[@CanonicalImage = "SI.SID", @Image = "si.sid"]
| | +- PrimaryPrefix[@CanonicalImage = "SI.SID", @Image = "si.sid", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "SI.SID", @Image = "si.sid"]
| | +- TableName[@CanonicalImage = "SI", @Image = "si"]
| | | +- ID[@CanonicalImage = "SI", @Image = "si"]
| | +- Column[@CanonicalImage = "SID", @Image = "sid"]
| | +- ID[@CanonicalImage = "SID", @Image = "sid"]
| +- SqlExpression[@CanonicalImage = "'114514'", @Image = "'114514'"]
| +- PrimaryPrefix[@CanonicalImage = "'114514'", @Image = "'114514'", @SelfModifier = false]
| +- Literal[@CanonicalImage = "'114514'", @Image = "'114514'"]
| +- StringLiteral[@CanonicalImage = "'114514'", @Image = "'114514'", @String = "114514"]
+- ID[@CanonicalImage = "EXAMPLE_PROCEDURE", @Image = "EXAMPLE_PROCEDURE"]