Merge branch 'master' into pr-5087

This commit is contained in:
Andreas Dangel committed 2024-07-11 09:49:04 +02:00
commit 3579f3f079
281 files changed
+6773 -8798

No files matched your search

File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -7,7 +7,7 @@
<parent>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd</artifactId>
<version>7.3.0-SNAPSHOT</version>
<version>7.4.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
@@ -6,6 +6,10 @@
package net.sourceforge.pmd.lang.plsql.ast;
import net.sourceforge.pmd.annotation.InternalApi;
import net.sourceforge.pmd.lang.TokenManager;
import net.sourceforge.pmd.lang.ast.impl.javacc.CharStream;
import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccToken;
import net.sourceforge.pmd.lang.document.TextDocument;
import net.sourceforge.pmd.lang.symboltable.NameDeclaration;
import net.sourceforge.pmd.lang.symboltable.Scope;
@@ -36,4 +40,8 @@ public final class InternalApiBridge {
public static void setNameDeclaration(ASTVariableOrConstantDeclaratorId node, NameDeclaration decl) {
node.setNameDeclaration(decl);
}
public static TokenManager<JavaccToken> newTokenManager(TextDocument doc) {
return PLSQLTokenKinds.newTokenManager(CharStream.create(doc, PLSQLParser.TOKEN_BEHAVIOR));
}
}
@@ -4,16 +4,77 @@
package net.sourceforge.pmd.lang.plsql.ast;
import java.util.Locale;
import org.checkerframework.checker.nullness.qual.Nullable;
import net.sourceforge.pmd.benchmark.TimeTracker;
import net.sourceforge.pmd.lang.ast.ParseException;
import net.sourceforge.pmd.lang.ast.impl.javacc.CharStream;
import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccToken;
import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccTokenDocument;
import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccTokenDocument.TokenDocumentBehavior;
import net.sourceforge.pmd.lang.ast.impl.javacc.JjtreeParserAdapter;
import net.sourceforge.pmd.lang.document.Chars;
import net.sourceforge.pmd.lang.plsql.symboltable.SymbolFacade;
public class PLSQLParser extends JjtreeParserAdapter<ASTInput> {
private static final TokenDocumentBehavior TOKEN_BEHAVIOR = new TokenDocumentBehavior(PLSQLTokenKinds.TOKEN_NAMES);
// Stores images of constant string literals.
// This is to reuse the image strings for PLSQL keywords.
// JavaCC unfortunately does not store a constant image for those
// keywords because the grammar is case-insensitive.
// This optimization has the effect that the image of keyword tokens
// is always upper-case, regardless of the actual case used in the code.
// The original casing can be found by looking at the TextDocument for the file.
// NOTE: the size of this array should be greater than the number of tokens in the file.
private static final String[] STRING_LITERAL_IMAGES_EXTRA = new String[PLSQLTokenKinds.TOKEN_NAMES.size()];
static {
for (int i = 0; i < PLSQLTokenKinds.TOKEN_NAMES.size(); i++) {
String image = PLSQLTokenKinds.TOKEN_NAMES.get(i);
if (image.startsWith("\"") && image.endsWith("\"")) {
// a string literal image, remove the quotes
image = image.substring(1, image.length() - 1);
STRING_LITERAL_IMAGES_EXTRA[i] = image;
}
}
}
static final TokenDocumentBehavior TOKEN_BEHAVIOR = new TokenDocumentBehavior(PLSQLTokenKinds.TOKEN_NAMES) {
@Override
public JavaccToken createToken(JavaccTokenDocument self, int kind, CharStream cs, @Nullable String image) {
if (image == null) {
// fetch another constant image if possible.
image = STRING_LITERAL_IMAGES_EXTRA[kind];
}
if (image == null) {
Chars imageCs = cs.getTokenImageCs();
if (kind == PLSQLTokenKinds.IDENTIFIER && imageCs.charAt(0) == '"') {
// remove quotes to make identical to bare ID
image = imageCs.substring(1, imageCs.length() - 1);
} else {
image = imageCs.toString();
}
// PLSQL is case-insensitive, but the contents of
// string literals and the like are case-sensitive.
// Note: tokens are normalized to uppercase make CPD case-insensitive.
// We use uppercase and not lowercase because that way, PLSQL keywords
// will be returned unchanged (they are already uppercase, see PLSQLParser),
// therefore creating fewer strings in memory.
if (kind != PLSQLTokenKinds.CHARACTER_LITERAL
&& kind != PLSQLTokenKinds.STRING_LITERAL
&& kind != PLSQLTokenKinds.QUOTED_LITERAL) {
image = image.toUpperCase(Locale.ROOT);
}
}
return super.createToken(self, kind, cs, image);
}
};
@Override
protected TokenDocumentBehavior tokenBehavior() {
@@ -8,9 +8,9 @@ import net.sourceforge.pmd.cpd.CpdLanguageProperties;
import net.sourceforge.pmd.cpd.impl.JavaccCpdLexer;
import net.sourceforge.pmd.lang.LanguagePropertyBundle;
import net.sourceforge.pmd.lang.TokenManager;
import net.sourceforge.pmd.lang.ast.impl.javacc.CharStream;
import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccToken;
import net.sourceforge.pmd.lang.document.TextDocument;
import net.sourceforge.pmd.lang.plsql.ast.InternalApiBridge;
import net.sourceforge.pmd.lang.plsql.ast.PLSQLTokenKinds;
/**
@@ -34,25 +34,26 @@ public class PLSQLCpdLexer extends JavaccCpdLexer {
@Override
protected String getImage(JavaccToken plsqlToken) {
String image = plsqlToken.getImage();
String image;
if (ignoreIdentifiers && plsqlToken.kind == PLSQLTokenKinds.IDENTIFIER) {
image = String.valueOf(plsqlToken.kind);
}
if (ignoreLiterals && (plsqlToken.kind == PLSQLTokenKinds.UNSIGNED_NUMERIC_LITERAL
image = "<identifier>";
} else if (ignoreLiterals && (plsqlToken.kind == PLSQLTokenKinds.UNSIGNED_NUMERIC_LITERAL
|| plsqlToken.kind == PLSQLTokenKinds.FLOAT_LITERAL
|| plsqlToken.kind == PLSQLTokenKinds.INTEGER_LITERAL
|| plsqlToken.kind == PLSQLTokenKinds.CHARACTER_LITERAL
|| plsqlToken.kind == PLSQLTokenKinds.STRING_LITERAL
|| plsqlToken.kind == PLSQLTokenKinds.QUOTED_LITERAL)) {
image = String.valueOf(plsqlToken.kind);
// the token kind is preserved
image = PLSQLTokenKinds.describe(plsqlToken.kind);
} else {
image = plsqlToken.getImage();
}
return image;
}
@Override
protected TokenManager<JavaccToken> makeLexerImpl(TextDocument doc) {
return PLSQLTokenKinds.newTokenManager(CharStream.create(doc));
return InternalApiBridge.newTokenManager(doc);
}
}
@@ -16,7 +16,7 @@ class CursorAttributesTest extends AbstractPLSQLParserTst {
void parseCursorWithAttribute() {
ASTInput input = plsql.parseResource("CursorAttributes.pls");
ASTExpression exp = input.descendants(ASTIfStatement.class).first().firstChild(ASTExpression.class);
assertEquals("TestSearch%notfound", exp.getImage());
assertEquals("TestSearch%NOTFOUND", exp.getImage());
}
@Test
@@ -51,4 +51,14 @@ class PlsqlTreeDumpTest extends BaseTreeDumpTest {
void errorLoggingClause() {
doTest("ErrorLoggingClause2779");
}
@Test
void compoundTriggerWithAdditionalDeclarations() {
doTest("CompoundTriggerWithAdditionalDeclarations4270");
}
@Test
void exceptionHandlerTomKytesDespair() {
doTest("ExceptionHandlerTomKytesDespair");
}
}
@@ -4,8 +4,9 @@
package net.sourceforge.pmd.lang.plsql.ast;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.startsWith;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.List;
@@ -36,7 +37,7 @@ class StringLiteralsTest extends AbstractPLSQLParserTst {
ASTInput input = plsql.parseResource("MultilineVarchar.pls");
List<ASTStringLiteral> strings = input.descendants(ASTStringLiteral.class).toList();
assertEquals(1, strings.size());
assertTrue(normalizeEol(strings.get(0).getString()).startsWith("\ncreate or replace and"));
assertThat(normalizeEol(strings.get(0).getString()), startsWith("\ncreate or replace and"));
}
private static void assertString(String quoted, String plain, int index, List<ASTStringLiteral> strings) {
@@ -6,8 +6,10 @@ package net.sourceforge.pmd.lang.plsql.cpd;
import org.junit.jupiter.api.Test;
import net.sourceforge.pmd.cpd.CpdLanguageProperties;
import net.sourceforge.pmd.lang.plsql.PLSQLLanguageModule;
import net.sourceforge.pmd.lang.test.cpd.CpdTextComparisonTest;
import net.sourceforge.pmd.lang.test.cpd.LanguagePropertyConfig;
class PLSQLCpdLexerTest extends CpdTextComparisonTest {
@@ -29,4 +31,20 @@ class PLSQLCpdLexerTest extends CpdTextComparisonTest {
void testTabWidth() {
doTest("tabWidth");
}
@Test
void testIdentifiers() {
doTest("identifiers");
}
@Test
void anonymizeLiterals() {
doTest("sample-plsql", "_ignore-literals", ignoreLiterals());
}
LanguagePropertyConfig ignoreLiterals() {
return props -> {
props.setProperty(CpdLanguageProperties.CPD_ANONYMIZE_LITERALS, true);
};
}
}
@@ -0,0 +1,45 @@
--
-- BSD-style license; for more info see http://pmd.sourceforge.net/license.html
--
-- https://github.com/pmd/pmd/issues/4270
-- TRIGGER EXAMPLE
CREATE OR REPLACE TRIGGER EXAMPLE_TRIGGER
FOR INSERT ON TEST_TABLE
COMPOUND TRIGGER
--
l_number_one NUMBER(2) := ROUND(DBMS_RANDOM.Value(1, 10));
l_number_two NUMBER(2) := ROUND(DBMS_RANDOM.Value(1, 10));
--
BEFORE EACH ROW IS
--
-- This is not officially documented, but might be possible - declarations before the begin block
l_tot_numbers NUMBER(2);
--
BEGIN
--
l_tot_numbers := l_number_one + l_number_two;
--
:NEW.col_one := l_number_one;
:NEW.col_two := l_number_two;
:NEW.col_three := l_tot_numbers;
--
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20001, 'ERROR AT EXAMPLE_TRIGGER - BEFORE EACH ROW' || CHR(10) || SQLERRM);
END BEFORE EACH ROW;
--
--
AFTER STATEMENT IS
BEGIN
--
DBMS_OUTPUT.Put_Line('This is just an example!');
--
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20002, 'ERROR AT EXAMPLE_TRIGGER - AFTER STATEMENT' || CHR(10) || SQLERRM);
END AFTER STATEMENT;
--
END EXAMPLE_TRIGGER;
@@ -0,0 +1,243 @@
+- Input[@CanonicalImage = null, @ExcludedLinesCount = 0, @ExcludedRangesCount = 0]
+- TriggerUnit[@CanonicalImage = "EXAMPLE_TRIGGER", @Image = "EXAMPLE_TRIGGER", @MethodName = "EXAMPLE_TRIGGER", @Name = "EXAMPLE_TRIGGER", @ObjectName = "EXAMPLE_TRIGGER"]
+- ObjectNameDeclaration[@CanonicalImage = "EXAMPLE_TRIGGER", @Image = "EXAMPLE_TRIGGER"]
| +- ID[@CanonicalImage = "EXAMPLE_TRIGGER", @Image = "EXAMPLE_TRIGGER"]
+- ID[@CanonicalImage = "TEST_TABLE", @Image = "TEST_TABLE"]
+- CompoundTriggerBlock[@CanonicalImage = null]
+- DeclarativeSection[@CanonicalImage = null]
| +- DeclarativeUnit[@CanonicalImage = null]
| | +- VariableOrConstantDeclaration[@CanonicalImage = null]
| | +- VariableOrConstantDeclarator[@CanonicalImage = "L_NUMBER_ONE NUMBER(2) := ROUND", @Image = "l_number_one NUMBER(2) := ROUND"]
| | +- VariableOrConstantDeclaratorId[@Array = false, @ArrayDepth = 0, @CanonicalImage = "L_NUMBER_ONE", @Image = "l_number_one"]
| | | +- ID[@CanonicalImage = "L_NUMBER_ONE", @Image = "l_number_one"]
| | +- Datatype[@CanonicalImage = "NUMBER(2)", @Image = "NUMBER(2)", @TypeImage = "NUMBER(2)"]
| | | +- ScalarDataTypeName[@CanonicalImage = "NUMBER(2)", @Image = "NUMBER(2)"]
| | | +- NumericLiteral[@CanonicalImage = "2", @Image = "2"]
| | +- VariableOrConstantInitializer[@CanonicalImage = "ROUND", @Image = "ROUND"]
| | +- Expression[@CanonicalImage = "ROUND", @Image = "ROUND"]
| | +- PrimaryPrefix[@CanonicalImage = "ROUND", @Image = "ROUND", @SelfModifier = false]
| | +- FunctionCall[@CanonicalImage = "ROUND", @Image = "ROUND"]
| | +- FunctionName[@CanonicalImage = "ROUND", @Image = "ROUND"]
| | | +- ID[@CanonicalImage = "ROUND", @Image = "ROUND"]
| | +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
| | +- ArgumentList[@CanonicalImage = null]
| | +- Argument[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "DBMS_RANDOM.VALUE", @Image = "DBMS_RANDOM.Value"]
| | +- PrimaryPrefix[@CanonicalImage = "DBMS_RANDOM.VALUE", @Image = "DBMS_RANDOM.Value", @SelfModifier = false]
| | +- FunctionCall[@CanonicalImage = "DBMS_RANDOM.VALUE", @Image = "DBMS_RANDOM.Value"]
| | +- FunctionName[@CanonicalImage = "DBMS_RANDOM.VALUE", @Image = "DBMS_RANDOM.Value"]
| | | +- ID[@CanonicalImage = "DBMS_RANDOM", @Image = "DBMS_RANDOM"]
| | | +- ID[@CanonicalImage = "VALUE", @Image = "Value"]
| | +- Arguments[@ArgumentCount = 2, @CanonicalImage = null]
| | +- ArgumentList[@CanonicalImage = null]
| | +- Argument[@CanonicalImage = null]
| | | +- Expression[@CanonicalImage = "1", @Image = "1"]
| | | +- PrimaryPrefix[@CanonicalImage = "1", @Image = "1", @SelfModifier = false]
| | | +- Literal[@CanonicalImage = "1", @Image = "1"]
| | | +- NumericLiteral[@CanonicalImage = "1", @Image = "1"]
| | +- Argument[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "10", @Image = "10"]
| | +- PrimaryPrefix[@CanonicalImage = "10", @Image = "10", @SelfModifier = false]
| | +- Literal[@CanonicalImage = "10", @Image = "10"]
| | +- NumericLiteral[@CanonicalImage = "10", @Image = "10"]
| +- DeclarativeUnit[@CanonicalImage = null]
| +- VariableOrConstantDeclaration[@CanonicalImage = null]
| +- VariableOrConstantDeclarator[@CanonicalImage = "L_NUMBER_TWO NUMBER(2) := ROUND", @Image = "l_number_two NUMBER(2) := ROUND"]
| +- VariableOrConstantDeclaratorId[@Array = false, @ArrayDepth = 0, @CanonicalImage = "L_NUMBER_TWO", @Image = "l_number_two"]
| | +- ID[@CanonicalImage = "L_NUMBER_TWO", @Image = "l_number_two"]
| +- Datatype[@CanonicalImage = "NUMBER(2)", @Image = "NUMBER(2)", @TypeImage = "NUMBER(2)"]
| | +- ScalarDataTypeName[@CanonicalImage = "NUMBER(2)", @Image = "NUMBER(2)"]
| | +- NumericLiteral[@CanonicalImage = "2", @Image = "2"]
| +- VariableOrConstantInitializer[@CanonicalImage = "ROUND", @Image = "ROUND"]
| +- Expression[@CanonicalImage = "ROUND", @Image = "ROUND"]
| +- PrimaryPrefix[@CanonicalImage = "ROUND", @Image = "ROUND", @SelfModifier = false]
| +- FunctionCall[@CanonicalImage = "ROUND", @Image = "ROUND"]
| +- FunctionName[@CanonicalImage = "ROUND", @Image = "ROUND"]
| | +- ID[@CanonicalImage = "ROUND", @Image = "ROUND"]
| +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
| +- ArgumentList[@CanonicalImage = null]
| +- Argument[@CanonicalImage = null]
| +- Expression[@CanonicalImage = "DBMS_RANDOM.VALUE", @Image = "DBMS_RANDOM.Value"]
| +- PrimaryPrefix[@CanonicalImage = "DBMS_RANDOM.VALUE", @Image = "DBMS_RANDOM.Value", @SelfModifier = false]
| +- FunctionCall[@CanonicalImage = "DBMS_RANDOM.VALUE", @Image = "DBMS_RANDOM.Value"]
| +- FunctionName[@CanonicalImage = "DBMS_RANDOM.VALUE", @Image = "DBMS_RANDOM.Value"]
| | +- ID[@CanonicalImage = "DBMS_RANDOM", @Image = "DBMS_RANDOM"]
| | +- ID[@CanonicalImage = "VALUE", @Image = "Value"]
| +- Arguments[@ArgumentCount = 2, @CanonicalImage = null]
| +- ArgumentList[@CanonicalImage = null]
| +- Argument[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "1", @Image = "1"]
| | +- PrimaryPrefix[@CanonicalImage = "1", @Image = "1", @SelfModifier = false]
| | +- Literal[@CanonicalImage = "1", @Image = "1"]
| | +- NumericLiteral[@CanonicalImage = "1", @Image = "1"]
| +- Argument[@CanonicalImage = null]
| +- Expression[@CanonicalImage = "10", @Image = "10"]
| +- PrimaryPrefix[@CanonicalImage = "10", @Image = "10", @SelfModifier = false]
| +- Literal[@CanonicalImage = "10", @Image = "10"]
| +- NumericLiteral[@CanonicalImage = "10", @Image = "10"]
+- TriggerTimingPointSection[@CanonicalImage = "BEFORE ROW", @Image = "BEFORE ROW", @MethodName = "BEFORE ROW", @Name = "BEFORE ROW"]
| +- DeclarativeSection[@CanonicalImage = null]
| | +- DeclarativeUnit[@CanonicalImage = null]
| | +- VariableOrConstantDeclaration[@CanonicalImage = null]
| | +- VariableOrConstantDeclarator[@CanonicalImage = "L_TOT_NUMBERS NUMBER(2)", @Image = "l_tot_numbers NUMBER(2)"]
| | +- VariableOrConstantDeclaratorId[@Array = false, @ArrayDepth = 0, @CanonicalImage = "L_TOT_NUMBERS", @Image = "l_tot_numbers"]
| | | +- ID[@CanonicalImage = "L_TOT_NUMBERS", @Image = "l_tot_numbers"]
| | +- Datatype[@CanonicalImage = "NUMBER(2)", @Image = "NUMBER(2)", @TypeImage = "NUMBER(2)"]
| | +- ScalarDataTypeName[@CanonicalImage = "NUMBER(2)", @Image = "NUMBER(2)"]
| | +- NumericLiteral[@CanonicalImage = "2", @Image = "2"]
| +- Statement[@CanonicalImage = null]
| | +- UnlabelledStatement[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "L_TOT_NUMBERS := L_NUMBER_ONE + L_NUMBER_TWO", @Image = "l_tot_numbers := l_number_one + l_number_two"]
| | +- Assignment[@CanonicalImage = "L_TOT_NUMBERS := L_NUMBER_ONE + L_NUMBER_TWO", @Image = "l_tot_numbers := l_number_one + l_number_two"]
| | +- PrimaryPrefix[@CanonicalImage = "L_TOT_NUMBERS", @Image = "l_tot_numbers", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "L_TOT_NUMBERS", @Image = "l_tot_numbers"]
| | | +- Column[@CanonicalImage = "L_TOT_NUMBERS", @Image = "l_tot_numbers"]
| | | +- ID[@CanonicalImage = "L_TOT_NUMBERS", @Image = "l_tot_numbers"]
| | +- Expression[@CanonicalImage = "L_NUMBER_ONE + L_NUMBER_TWO", @Image = "l_number_one + l_number_two"]
| | +- AdditiveExpression[@CanonicalImage = "L_NUMBER_ONE + L_NUMBER_TWO", @Image = "l_number_one + l_number_two"]
| | +- PrimaryPrefix[@CanonicalImage = "L_NUMBER_ONE", @Image = "l_number_one", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "L_NUMBER_ONE", @Image = "l_number_one"]
| | | +- Column[@CanonicalImage = "L_NUMBER_ONE", @Image = "l_number_one"]
| | | +- ID[@CanonicalImage = "L_NUMBER_ONE", @Image = "l_number_one"]
| | +- PrimaryPrefix[@CanonicalImage = "L_NUMBER_TWO", @Image = "l_number_two", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "L_NUMBER_TWO", @Image = "l_number_two"]
| | +- Column[@CanonicalImage = "L_NUMBER_TWO", @Image = "l_number_two"]
| | +- ID[@CanonicalImage = "L_NUMBER_TWO", @Image = "l_number_two"]
| +- Statement[@CanonicalImage = null]
| | +- UnlabelledStatement[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = ":NEW.COL_ONE := L_NUMBER_ONE", @Image = ":NEW.col_one := l_number_one"]
| | +- Assignment[@CanonicalImage = ":NEW.COL_ONE := L_NUMBER_ONE", @Image = ":NEW.col_one := l_number_one"]
| | +- PrimaryPrefix[@CanonicalImage = ":NEW.COL_ONE", @Image = ":NEW.col_one", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = ":NEW.COL_ONE", @Image = ":NEW.col_one"]
| | | +- TableName[@CanonicalImage = ":NEW", @Image = ":NEW"]
| | | | +- ID[@CanonicalImage = ":NEW", @Image = ":NEW"]
| | | +- Column[@CanonicalImage = "COL_ONE", @Image = "col_one"]
| | | +- ID[@CanonicalImage = "COL_ONE", @Image = "col_one"]
| | +- Expression[@CanonicalImage = "L_NUMBER_ONE", @Image = "l_number_one"]
| | +- PrimaryPrefix[@CanonicalImage = "L_NUMBER_ONE", @Image = "l_number_one", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "L_NUMBER_ONE", @Image = "l_number_one"]
| | +- Column[@CanonicalImage = "L_NUMBER_ONE", @Image = "l_number_one"]
| | +- ID[@CanonicalImage = "L_NUMBER_ONE", @Image = "l_number_one"]
| +- Statement[@CanonicalImage = null]
| | +- UnlabelledStatement[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = ":NEW.COL_TWO := L_NUMBER_TWO", @Image = ":NEW.col_two := l_number_two"]
| | +- Assignment[@CanonicalImage = ":NEW.COL_TWO := L_NUMBER_TWO", @Image = ":NEW.col_two := l_number_two"]
| | +- PrimaryPrefix[@CanonicalImage = ":NEW.COL_TWO", @Image = ":NEW.col_two", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = ":NEW.COL_TWO", @Image = ":NEW.col_two"]
| | | +- TableName[@CanonicalImage = ":NEW", @Image = ":NEW"]
| | | | +- ID[@CanonicalImage = ":NEW", @Image = ":NEW"]
| | | +- Column[@CanonicalImage = "COL_TWO", @Image = "col_two"]
| | | +- ID[@CanonicalImage = "COL_TWO", @Image = "col_two"]
| | +- Expression[@CanonicalImage = "L_NUMBER_TWO", @Image = "l_number_two"]
| | +- PrimaryPrefix[@CanonicalImage = "L_NUMBER_TWO", @Image = "l_number_two", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "L_NUMBER_TWO", @Image = "l_number_two"]
| | +- Column[@CanonicalImage = "L_NUMBER_TWO", @Image = "l_number_two"]
| | +- ID[@CanonicalImage = "L_NUMBER_TWO", @Image = "l_number_two"]
| +- Statement[@CanonicalImage = null]
| | +- UnlabelledStatement[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = ":NEW.COL_THREE := L_TOT_NUMBERS", @Image = ":NEW.col_three := l_tot_numbers"]
| | +- Assignment[@CanonicalImage = ":NEW.COL_THREE := L_TOT_NUMBERS", @Image = ":NEW.col_three := l_tot_numbers"]
| | +- PrimaryPrefix[@CanonicalImage = ":NEW.COL_THREE", @Image = ":NEW.col_three", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = ":NEW.COL_THREE", @Image = ":NEW.col_three"]
| | | +- TableName[@CanonicalImage = ":NEW", @Image = ":NEW"]
| | | | +- ID[@CanonicalImage = ":NEW", @Image = ":NEW"]
| | | +- Column[@CanonicalImage = "COL_THREE", @Image = "col_three"]
| | | +- ID[@CanonicalImage = "COL_THREE", @Image = "col_three"]
| | +- Expression[@CanonicalImage = "L_TOT_NUMBERS", @Image = "l_tot_numbers"]
| | +- PrimaryPrefix[@CanonicalImage = "L_TOT_NUMBERS", @Image = "l_tot_numbers", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "L_TOT_NUMBERS", @Image = "l_tot_numbers"]
| | +- Column[@CanonicalImage = "L_TOT_NUMBERS", @Image = "l_tot_numbers"]
| | +- ID[@CanonicalImage = "L_TOT_NUMBERS", @Image = "l_tot_numbers"]
| +- ExceptionHandler[@CanonicalImage = null]
| +- QualifiedName[@CanonicalImage = "OTHERS", @Image = "OTHERS"]
| | +- UnqualifiedID[@CanonicalImage = "OTHERS", @Image = "OTHERS"]
| +- Statement[@CanonicalImage = null]
| +- UnlabelledStatement[@CanonicalImage = null]
| +- Expression[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR"]
| +- PrimaryPrefix[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR", @SelfModifier = false]
| +- FunctionCall[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR"]
| +- FunctionName[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR"]
| | +- ID[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR"]
| +- Arguments[@ArgumentCount = 2, @CanonicalImage = null]
| +- ArgumentList[@CanonicalImage = null]
| +- Argument[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "-20001", @Image = " -20001"]
| | +- PrimaryPrefix[@CanonicalImage = "20001", @Image = "20001", @SelfModifier = false]
| | +- Literal[@CanonicalImage = "20001", @Image = "20001"]
| | +- NumericLiteral[@CanonicalImage = "20001", @Image = "20001"]
| +- Argument[@CanonicalImage = null]
| +- Expression[@CanonicalImage = "\'ERROR AT EXAMPLE_TRIGGER - BEFORE EACH ROW\' || CHR || SQLERRM", @Image = "\'ERROR AT EXAMPLE_TRIGGER - BEFORE EACH ROW\' || CHR || SQLERRM"]
| +- AdditiveExpression[@CanonicalImage = "\'ERROR AT EXAMPLE_TRIGGER - BEFORE EACH ROW\' || CHR || SQLERRM", @Image = "\'ERROR AT EXAMPLE_TRIGGER - BEFORE EACH ROW\' || CHR || SQLERRM"]
| +- PrimaryPrefix[@CanonicalImage = "\'ERROR AT EXAMPLE_TRIGGER - BEFORE EACH ROW\'", @Image = "\'ERROR AT EXAMPLE_TRIGGER - BEFORE EACH ROW\'", @SelfModifier = false]
| | +- Literal[@CanonicalImage = "\'ERROR AT EXAMPLE_TRIGGER - BEFORE EACH ROW\'", @Image = "\'ERROR AT EXAMPLE_TRIGGER - BEFORE EACH ROW\'"]
| | +- StringLiteral[@CanonicalImage = "\'ERROR AT EXAMPLE_TRIGGER - BEFORE EACH ROW\'", @Image = "\'ERROR AT EXAMPLE_TRIGGER - BEFORE EACH ROW\'", @String = "ERROR AT EXAMPLE_TRIGGER - BEFORE EACH ROW"]
| +- PrimaryPrefix[@CanonicalImage = "CHR", @Image = "CHR", @SelfModifier = false]
| | +- FunctionCall[@CanonicalImage = "CHR", @Image = "CHR"]
| | +- FunctionName[@CanonicalImage = "CHR", @Image = "CHR"]
| | | +- ID[@CanonicalImage = "CHR", @Image = "CHR"]
| | +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
| | +- ArgumentList[@CanonicalImage = null]
| | +- Argument[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "10", @Image = "10"]
| | +- PrimaryPrefix[@CanonicalImage = "10", @Image = "10", @SelfModifier = false]
| | +- Literal[@CanonicalImage = "10", @Image = "10"]
| | +- NumericLiteral[@CanonicalImage = "10", @Image = "10"]
| +- PrimaryPrefix[@CanonicalImage = "SQLERRM", @Image = "SQLERRM", @SelfModifier = false]
| +- SimpleExpression[@CanonicalImage = "SQLERRM", @Image = "SQLERRM"]
| +- Column[@CanonicalImage = "SQLERRM", @Image = "SQLERRM"]
| +- ID[@CanonicalImage = "SQLERRM", @Image = "SQLERRM"]
+- TriggerTimingPointSection[@CanonicalImage = "AFTER STATEMENT", @Image = "AFTER STATEMENT", @MethodName = "AFTER STATEMENT", @Name = "AFTER STATEMENT"]
| +- 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 = "\'THIS IS JUST AN EXAMPLE!\'", @Image = "\'This is just an example!\'"]
| | +- PrimaryPrefix[@CanonicalImage = "\'THIS IS JUST AN EXAMPLE!\'", @Image = "\'This is just an example!\'", @SelfModifier = false]
| | +- Literal[@CanonicalImage = "\'THIS IS JUST AN EXAMPLE!\'", @Image = "\'This is just an example!\'"]
| | +- StringLiteral[@CanonicalImage = "\'THIS IS JUST AN EXAMPLE!\'", @Image = "\'This is just an example!\'", @String = "This is just an example!"]
| +- ExceptionHandler[@CanonicalImage = null]
| +- QualifiedName[@CanonicalImage = "OTHERS", @Image = "OTHERS"]
| | +- UnqualifiedID[@CanonicalImage = "OTHERS", @Image = "OTHERS"]
| +- Statement[@CanonicalImage = null]
| +- UnlabelledStatement[@CanonicalImage = null]
| +- Expression[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR"]
| +- PrimaryPrefix[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR", @SelfModifier = false]
| +- FunctionCall[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR"]
| +- FunctionName[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR"]
| | +- ID[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR"]
| +- Arguments[@ArgumentCount = 2, @CanonicalImage = null]
| +- ArgumentList[@CanonicalImage = null]
| +- Argument[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "-20002", @Image = " -20002"]
| | +- PrimaryPrefix[@CanonicalImage = "20002", @Image = "20002", @SelfModifier = false]
| | +- Literal[@CanonicalImage = "20002", @Image = "20002"]
| | +- NumericLiteral[@CanonicalImage = "20002", @Image = "20002"]
| +- Argument[@CanonicalImage = null]
| +- Expression[@CanonicalImage = "\'ERROR AT EXAMPLE_TRIGGER - AFTER STATEMENT\' || CHR || SQLERRM", @Image = "\'ERROR AT EXAMPLE_TRIGGER - AFTER STATEMENT\' || CHR || SQLERRM"]
| +- AdditiveExpression[@CanonicalImage = "\'ERROR AT EXAMPLE_TRIGGER - AFTER STATEMENT\' || CHR || SQLERRM", @Image = "\'ERROR AT EXAMPLE_TRIGGER - AFTER STATEMENT\' || CHR || SQLERRM"]
| +- PrimaryPrefix[@CanonicalImage = "\'ERROR AT EXAMPLE_TRIGGER - AFTER STATEMENT\'", @Image = "\'ERROR AT EXAMPLE_TRIGGER - AFTER STATEMENT\'", @SelfModifier = false]
| | +- Literal[@CanonicalImage = "\'ERROR AT EXAMPLE_TRIGGER - AFTER STATEMENT\'", @Image = "\'ERROR AT EXAMPLE_TRIGGER - AFTER STATEMENT\'"]
| | +- StringLiteral[@CanonicalImage = "\'ERROR AT EXAMPLE_TRIGGER - AFTER STATEMENT\'", @Image = "\'ERROR AT EXAMPLE_TRIGGER - AFTER STATEMENT\'", @String = "ERROR AT EXAMPLE_TRIGGER - AFTER STATEMENT"]
| +- PrimaryPrefix[@CanonicalImage = "CHR", @Image = "CHR", @SelfModifier = false]
| | +- FunctionCall[@CanonicalImage = "CHR", @Image = "CHR"]
| | +- FunctionName[@CanonicalImage = "CHR", @Image = "CHR"]
| | | +- ID[@CanonicalImage = "CHR", @Image = "CHR"]
| | +- Arguments[@ArgumentCount = 1, @CanonicalImage = null]
| | +- ArgumentList[@CanonicalImage = null]
| | +- Argument[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "10", @Image = "10"]
| | +- PrimaryPrefix[@CanonicalImage = "10", @Image = "10", @SelfModifier = false]
| | +- Literal[@CanonicalImage = "10", @Image = "10"]
| | +- NumericLiteral[@CanonicalImage = "10", @Image = "10"]
| +- PrimaryPrefix[@CanonicalImage = "SQLERRM", @Image = "SQLERRM", @SelfModifier = false]
| +- SimpleExpression[@CanonicalImage = "SQLERRM", @Image = "SQLERRM"]
| +- Column[@CanonicalImage = "SQLERRM", @Image = "SQLERRM"]
| +- ID[@CanonicalImage = "SQLERRM", @Image = "SQLERRM"]
+- ID[@CanonicalImage = "EXAMPLE_TRIGGER", @Image = "EXAMPLE_TRIGGER"]
@@ -4,7 +4,6 @@
create or replace procedure test as
begin
-- https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/INSERT.html#GUID-903F8043-0254-4EE9-ACC1-CB8AC0AF3423__BCEGDJDJ
INSERT INTO raises
SELECT employee_id, salary*1.1 FROM employees
@@ -25,5 +24,40 @@ begin
-- without a table alias
delete from test_table
log errors into err$_test_table reject limit unlimited;
-- https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/INSERT.html#GUID-903F8043-0254-4EE9-ACC1-CB8AC0AF3423__BCEGDJDJ
-- multi-insert with conditional and optional error logging
INSERT ALL
WHEN order_total <= 100000 THEN
INTO small_orders LOG ERRORS INTO errlog ('my_bad') REJECT LIMIT 10
WHEN order_total > 1000000 AND order_total <= 200000 THEN
INTO medium_orders LOG ERRORS INTO errlog ('my_bad') REJECT LIMIT 10
WHEN order_total > 200000 THEN
INTO large_orders
ELSE
INTO other_orders LOG ERRORS INTO errlog ('my_bad') REJECT LIMIT 10
SELECT order_id, order_total, sales_rep_id, customer_id
FROM orders;
-- multi-insert with optional error logging
INSERT ALL
INTO sales (prod_id, cust_id, time_id, amount)
VALUES (product_id, customer_id, weekly_start_date, sales_sun)
LOG ERRORS INTO errlog ('my_bad') REJECT LIMIT 10
INTO sales (prod_id, cust_id, time_id, amount)
VALUES (product_id, customer_id, weekly_start_date+1, sales_mon)
LOG ERRORS INTO errlog ('my_bad') REJECT LIMIT 10
INTO sales (prod_id, cust_id, time_id, amount)
VALUES (product_id, customer_id, weekly_start_date+2, sales_tue)
INTO sales (prod_id, cust_id, time_id, amount)
VALUES (product_id, customer_id, weekly_start_date+3, sales_wed)
INTO sales (prod_id, cust_id, time_id, amount)
VALUES (product_id, customer_id, weekly_start_date+4, sales_thu)
INTO sales (prod_id, cust_id, time_id, amount)
VALUES (product_id, customer_id, weekly_start_date+5, sales_fri)
INTO sales (prod_id, cust_id, time_id, amount)
VALUES (product_id, customer_id, weekly_start_date+6, sales_sat)
SELECT product_id, customer_id, weekly_start_date, sales_sun,
sales_mon, sales_tue, sales_wed, sales_thu, sales_fri, sales_sat
FROM sales_input_table;
end;
/
@@ -0,0 +1,44 @@
--
-- BSD-style license; for more info see http://pmd.sourceforge.net/license.html
--
CREATE OR REPLACE PACKAGE BODY update_planned_hrs
IS
PROCEDURE set_new_planned (p_emp_id IN NUMBER, p_project_id IN NUMBER, p_hours IN NUMBER)
IS
BEGIN
UPDATE employee_on_activity ea
SET ea.ea_planned_hours = p_hours
WHERE
ea.ea_emp_id = p_emp_id
AND ea.ea_proj_id = p_project_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR (-20100, 'No such employee or project');
END set_new_planned;
FUNCTION existing_planned (p_emp_id IN NUMBER, p_project_id IN NUMBER) RETURN NUMBER
IS
existing_hours NUMBER(4);
BEGIN
SELECT ea.ea_planned_hours INTO existing_hours
FROM employee_on_activity ea
WHERE
ea.ea_emp_id = p_emp_id
AND ea.ea_proj_id = p_project_id;
RETURN (existing_hours);
EXCEPTION
WHEN OTHERS THEN NULL; -- rule violation
END existing_planned;
END update_planned_hrs;
/
@@ -0,0 +1,192 @@
+- Input[@CanonicalImage = null, @ExcludedLinesCount = 0, @ExcludedRangesCount = 0]
+- PackageBody[@CanonicalImage = "UPDATE_PLANNED_HRS", @Image = "update_planned_hrs", @ObjectName = "update_planned_hrs"]
+- ObjectNameDeclaration[@CanonicalImage = "UPDATE_PLANNED_HRS", @Image = "update_planned_hrs"]
| +- ID[@CanonicalImage = "UPDATE_PLANNED_HRS", @Image = "update_planned_hrs"]
+- DeclarativeSection[@CanonicalImage = null]
| +- DeclarativeUnit[@CanonicalImage = null]
| | +- ProgramUnit[@CanonicalImage = null, @MethodName = "set_new_planned", @Name = "set_new_planned", @ObjectName = null]
| | +- MethodDeclarator[@CanonicalImage = "SET_NEW_PLANNED", @Image = "set_new_planned", @ParameterCount = 1]
| | | +- ObjectNameDeclaration[@CanonicalImage = "SET_NEW_PLANNED", @Image = "set_new_planned"]
| | | | +- ID[@CanonicalImage = "SET_NEW_PLANNED", @Image = "set_new_planned"]
| | | +- FormalParameters[@CanonicalImage = "(P_EMP_ID,P_PROJECT_ID,P_HOURS)", @Image = "(p_emp_id,p_project_id,p_hours)"]
| | | +- FormalParameter[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id", @In = true, @NoCopy = false, @Out = false]
| | | | +- ID[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id"]
| | | | +- Datatype[@CanonicalImage = "NUMBER", @Image = "NUMBER", @TypeImage = "NUMBER"]
| | | | +- ScalarDataTypeName[@CanonicalImage = "NUMBER", @Image = "NUMBER"]
| | | +- FormalParameter[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id", @In = true, @NoCopy = false, @Out = false]
| | | | +- ID[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id"]
| | | | +- Datatype[@CanonicalImage = "NUMBER", @Image = "NUMBER", @TypeImage = "NUMBER"]
| | | | +- ScalarDataTypeName[@CanonicalImage = "NUMBER", @Image = "NUMBER"]
| | | +- FormalParameter[@CanonicalImage = "P_HOURS", @Image = "p_hours", @In = true, @NoCopy = false, @Out = false]
| | | +- ID[@CanonicalImage = "P_HOURS", @Image = "p_hours"]
| | | +- Datatype[@CanonicalImage = "NUMBER", @Image = "NUMBER", @TypeImage = "NUMBER"]
| | | +- ScalarDataTypeName[@CanonicalImage = "NUMBER", @Image = "NUMBER"]
| | +- Statement[@CanonicalImage = null]
| | | +- UnlabelledStatement[@CanonicalImage = null]
| | | +- UpdateStatement[@CanonicalImage = null]
| | | +- DMLTableExpressionClause[@CanonicalImage = null]
| | | | +- TableName[@CanonicalImage = "EMPLOYEE_ON_ACTIVITY", @Image = "employee_on_activity"]
| | | | +- ID[@CanonicalImage = "EMPLOYEE_ON_ACTIVITY", @Image = "employee_on_activity"]
| | | +- TableAlias[@CanonicalImage = "EA", @Image = "ea"]
| | | | +- ID[@CanonicalImage = "EA", @Image = "ea"]
| | | +- UpdateSetClause[@CanonicalImage = null]
| | | | +- TableName[@CanonicalImage = "EA", @Image = "ea"]
| | | | | +- ID[@CanonicalImage = "EA", @Image = "ea"]
| | | | +- Column[@CanonicalImage = "EA_PLANNED_HOURS", @Image = "ea_planned_hours"]
| | | | | +- ID[@CanonicalImage = "EA_PLANNED_HOURS", @Image = "ea_planned_hours"]
| | | | +- Expression[@CanonicalImage = "P_HOURS", @Image = "p_hours"]
| | | | +- PrimaryPrefix[@CanonicalImage = "P_HOURS", @Image = "p_hours", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "P_HOURS", @Image = "p_hours"]
| | | | +- Column[@CanonicalImage = "P_HOURS", @Image = "p_hours"]
| | | | +- ID[@CanonicalImage = "P_HOURS", @Image = "p_hours"]
| | | +- WhereClause[@CanonicalImage = null]
| | | +- Condition[@CanonicalImage = null]
| | | +- CompoundCondition[@CanonicalImage = null, @Type = "AND"]
| | | +- ComparisonCondition[@CanonicalImage = null, @Operator = "="]
| | | | +- SqlExpression[@CanonicalImage = "EA.EA_EMP_ID", @Image = "ea.ea_emp_id"]
| | | | | +- PrimaryPrefix[@CanonicalImage = "EA.EA_EMP_ID", @Image = "ea.ea_emp_id", @SelfModifier = false]
| | | | | +- SimpleExpression[@CanonicalImage = "EA.EA_EMP_ID", @Image = "ea.ea_emp_id"]
| | | | | +- TableName[@CanonicalImage = "EA", @Image = "ea"]
| | | | | | +- ID[@CanonicalImage = "EA", @Image = "ea"]
| | | | | +- Column[@CanonicalImage = "EA_EMP_ID", @Image = "ea_emp_id"]
| | | | | +- ID[@CanonicalImage = "EA_EMP_ID", @Image = "ea_emp_id"]
| | | | +- SqlExpression[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id"]
| | | | +- PrimaryPrefix[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id"]
| | | | +- Column[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id"]
| | | | +- ID[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id"]
| | | +- Condition[@CanonicalImage = null]
| | | +- CompoundCondition[@CanonicalImage = null, @Type = null]
| | | +- ComparisonCondition[@CanonicalImage = null, @Operator = "="]
| | | +- SqlExpression[@CanonicalImage = "EA.EA_PROJ_ID", @Image = "ea.ea_proj_id"]
| | | | +- PrimaryPrefix[@CanonicalImage = "EA.EA_PROJ_ID", @Image = "ea.ea_proj_id", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "EA.EA_PROJ_ID", @Image = "ea.ea_proj_id"]
| | | | +- TableName[@CanonicalImage = "EA", @Image = "ea"]
| | | | | +- ID[@CanonicalImage = "EA", @Image = "ea"]
| | | | +- Column[@CanonicalImage = "EA_PROJ_ID", @Image = "ea_proj_id"]
| | | | +- ID[@CanonicalImage = "EA_PROJ_ID", @Image = "ea_proj_id"]
| | | +- SqlExpression[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id"]
| | | +- PrimaryPrefix[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id"]
| | | +- Column[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id"]
| | | +- ID[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id"]
| | +- ExceptionHandler[@CanonicalImage = null]
| | | +- QualifiedName[@CanonicalImage = "NO_DATA_FOUND", @Image = "NO_DATA_FOUND"]
| | | | +- UnqualifiedID[@CanonicalImage = "NO_DATA_FOUND", @Image = "NO_DATA_FOUND"]
| | | +- Statement[@CanonicalImage = null]
| | | +- UnlabelledStatement[@CanonicalImage = null]
| | | +- Expression[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR"]
| | | +- PrimaryPrefix[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR", @SelfModifier = false]
| | | +- FunctionCall[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR"]
| | | +- FunctionName[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR"]
| | | | +- ID[@CanonicalImage = "RAISE_APPLICATION_ERROR", @Image = "RAISE_APPLICATION_ERROR"]
| | | +- Arguments[@ArgumentCount = 2, @CanonicalImage = null]
| | | +- ArgumentList[@CanonicalImage = null]
| | | +- Argument[@CanonicalImage = null]
| | | | +- Expression[@CanonicalImage = "-20100", @Image = " -20100"]
| | | | +- PrimaryPrefix[@CanonicalImage = "20100", @Image = "20100", @SelfModifier = false]
| | | | +- Literal[@CanonicalImage = "20100", @Image = "20100"]
| | | | +- NumericLiteral[@CanonicalImage = "20100", @Image = "20100"]
| | | +- Argument[@CanonicalImage = null]
| | | +- Expression[@CanonicalImage = "\'NO SUCH EMPLOYEE OR PROJECT\'", @Image = "\'No such employee or project\'"]
| | | +- PrimaryPrefix[@CanonicalImage = "\'NO SUCH EMPLOYEE OR PROJECT\'", @Image = "\'No such employee or project\'", @SelfModifier = false]
| | | +- Literal[@CanonicalImage = "\'NO SUCH EMPLOYEE OR PROJECT\'", @Image = "\'No such employee or project\'"]
| | | +- StringLiteral[@CanonicalImage = "\'NO SUCH EMPLOYEE OR PROJECT\'", @Image = "\'No such employee or project\'", @String = "No such employee or project"]
| | +- ID[@CanonicalImage = "SET_NEW_PLANNED", @Image = "set_new_planned"]
| +- DeclarativeUnit[@CanonicalImage = null]
| +- ProgramUnit[@CanonicalImage = null, @MethodName = "existing_planned", @Name = "existing_planned", @ObjectName = null]
| +- MethodDeclarator[@CanonicalImage = "EXISTING_PLANNED", @Image = "existing_planned", @ParameterCount = 1]
| | +- ObjectNameDeclaration[@CanonicalImage = "EXISTING_PLANNED", @Image = "existing_planned"]
| | | +- ID[@CanonicalImage = "EXISTING_PLANNED", @Image = "existing_planned"]
| | +- FormalParameters[@CanonicalImage = "(P_EMP_ID,P_PROJECT_ID)", @Image = "(p_emp_id,p_project_id)"]
| | | +- FormalParameter[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id", @In = true, @NoCopy = false, @Out = false]
| | | | +- ID[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id"]
| | | | +- Datatype[@CanonicalImage = "NUMBER", @Image = "NUMBER", @TypeImage = "NUMBER"]
| | | | +- ScalarDataTypeName[@CanonicalImage = "NUMBER", @Image = "NUMBER"]
| | | +- FormalParameter[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id", @In = true, @NoCopy = false, @Out = false]
| | | +- ID[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id"]
| | | +- Datatype[@CanonicalImage = "NUMBER", @Image = "NUMBER", @TypeImage = "NUMBER"]
| | | +- ScalarDataTypeName[@CanonicalImage = "NUMBER", @Image = "NUMBER"]
| | +- Datatype[@CanonicalImage = "NUMBER", @Image = "NUMBER", @TypeImage = "NUMBER"]
| | +- ScalarDataTypeName[@CanonicalImage = "NUMBER", @Image = "NUMBER"]
| +- DeclarativeSection[@CanonicalImage = null]
| | +- DeclarativeUnit[@CanonicalImage = null]
| | +- VariableOrConstantDeclaration[@CanonicalImage = null]
| | +- VariableOrConstantDeclarator[@CanonicalImage = "EXISTING_HOURS NUMBER(4)", @Image = "existing_hours NUMBER(4)"]
| | +- VariableOrConstantDeclaratorId[@Array = false, @ArrayDepth = 0, @CanonicalImage = "EXISTING_HOURS", @Image = "existing_hours"]
| | | +- ID[@CanonicalImage = "EXISTING_HOURS", @Image = "existing_hours"]
| | +- Datatype[@CanonicalImage = "NUMBER(4)", @Image = "NUMBER(4)", @TypeImage = "NUMBER(4)"]
| | +- ScalarDataTypeName[@CanonicalImage = "NUMBER(4)", @Image = "NUMBER(4)"]
| | +- NumericLiteral[@CanonicalImage = "4", @Image = "4"]
| +- Statement[@CanonicalImage = null]
| | +- UnlabelledStatement[@CanonicalImage = null]
| | +- SelectIntoStatement[@All = false, @CanonicalImage = null, @Distinct = false, @Unique = false]
| | +- SelectList[@CanonicalImage = null]
| | | +- SqlExpression[@CanonicalImage = "EA.EA_PLANNED_HOURS", @Image = "ea.ea_planned_hours"]
| | | +- PrimaryPrefix[@CanonicalImage = "EA.EA_PLANNED_HOURS", @Image = "ea.ea_planned_hours", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "EA.EA_PLANNED_HOURS", @Image = "ea.ea_planned_hours"]
| | | +- TableName[@CanonicalImage = "EA", @Image = "ea"]
| | | | +- ID[@CanonicalImage = "EA", @Image = "ea"]
| | | +- Column[@CanonicalImage = "EA_PLANNED_HOURS", @Image = "ea_planned_hours"]
| | | +- ID[@CanonicalImage = "EA_PLANNED_HOURS", @Image = "ea_planned_hours"]
| | +- IntoClause[@CanonicalImage = null]
| | | +- VariableName[@CanonicalImage = "EXISTING_HOURS", @Image = "existing_hours"]
| | | +- ID[@CanonicalImage = "EXISTING_HOURS", @Image = "existing_hours"]
| | +- FromClause[@CanonicalImage = null]
| | | +- TableReference[@CanonicalImage = null]
| | | +- TableName[@CanonicalImage = "EMPLOYEE_ON_ACTIVITY", @Image = "employee_on_activity"]
| | | | +- ID[@CanonicalImage = "EMPLOYEE_ON_ACTIVITY", @Image = "employee_on_activity"]
| | | +- TableAlias[@CanonicalImage = "EA", @Image = "ea"]
| | | +- ID[@CanonicalImage = "EA", @Image = "ea"]
| | +- WhereClause[@CanonicalImage = null]
| | +- Condition[@CanonicalImage = null]
| | +- CompoundCondition[@CanonicalImage = null, @Type = "AND"]
| | +- ComparisonCondition[@CanonicalImage = null, @Operator = "="]
| | | +- SqlExpression[@CanonicalImage = "EA.EA_EMP_ID", @Image = "ea.ea_emp_id"]
| | | | +- PrimaryPrefix[@CanonicalImage = "EA.EA_EMP_ID", @Image = "ea.ea_emp_id", @SelfModifier = false]
| | | | +- SimpleExpression[@CanonicalImage = "EA.EA_EMP_ID", @Image = "ea.ea_emp_id"]
| | | | +- TableName[@CanonicalImage = "EA", @Image = "ea"]
| | | | | +- ID[@CanonicalImage = "EA", @Image = "ea"]
| | | | +- Column[@CanonicalImage = "EA_EMP_ID", @Image = "ea_emp_id"]
| | | | +- ID[@CanonicalImage = "EA_EMP_ID", @Image = "ea_emp_id"]
| | | +- SqlExpression[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id"]
| | | +- PrimaryPrefix[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id"]
| | | +- Column[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id"]
| | | +- ID[@CanonicalImage = "P_EMP_ID", @Image = "p_emp_id"]
| | +- Condition[@CanonicalImage = null]
| | +- CompoundCondition[@CanonicalImage = null, @Type = null]
| | +- ComparisonCondition[@CanonicalImage = null, @Operator = "="]
| | +- SqlExpression[@CanonicalImage = "EA.EA_PROJ_ID", @Image = "ea.ea_proj_id"]
| | | +- PrimaryPrefix[@CanonicalImage = "EA.EA_PROJ_ID", @Image = "ea.ea_proj_id", @SelfModifier = false]
| | | +- SimpleExpression[@CanonicalImage = "EA.EA_PROJ_ID", @Image = "ea.ea_proj_id"]
| | | +- TableName[@CanonicalImage = "EA", @Image = "ea"]
| | | | +- ID[@CanonicalImage = "EA", @Image = "ea"]
| | | +- Column[@CanonicalImage = "EA_PROJ_ID", @Image = "ea_proj_id"]
| | | +- ID[@CanonicalImage = "EA_PROJ_ID", @Image = "ea_proj_id"]
| | +- SqlExpression[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id"]
| | +- PrimaryPrefix[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id"]
| | +- Column[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id"]
| | +- ID[@CanonicalImage = "P_PROJECT_ID", @Image = "p_project_id"]
| +- Statement[@CanonicalImage = null]
| | +- UnlabelledStatement[@CanonicalImage = null]
| | +- ReturnStatement[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "(EXISTING_HOURS)", @Image = "(existing_hours)"]
| | +- PrimaryPrefix[@CanonicalImage = "(EXISTING_HOURS)", @Image = "(existing_hours)", @SelfModifier = false]
| | +- Expression[@CanonicalImage = "EXISTING_HOURS", @Image = "existing_hours"]
| | +- PrimaryPrefix[@CanonicalImage = "EXISTING_HOURS", @Image = "existing_hours", @SelfModifier = false]
| | +- SimpleExpression[@CanonicalImage = "EXISTING_HOURS", @Image = "existing_hours"]
| | +- Column[@CanonicalImage = "EXISTING_HOURS", @Image = "existing_hours"]
| | +- ID[@CanonicalImage = "EXISTING_HOURS", @Image = "existing_hours"]
| +- ExceptionHandler[@CanonicalImage = null]
| | +- QualifiedName[@CanonicalImage = "OTHERS", @Image = "OTHERS"]
| | | +- UnqualifiedID[@CanonicalImage = "OTHERS", @Image = "OTHERS"]
| | +- Statement[@CanonicalImage = null]
| | +- UnlabelledStatement[@CanonicalImage = null]
| | +- Expression[@CanonicalImage = "NULL", @Image = "NULL"]
| | +- PrimaryPrefix[@CanonicalImage = "NULL", @Image = "NULL", @SelfModifier = false]
| | +- Literal[@CanonicalImage = "NULL", @Image = "NULL"]
| | +- NullLiteral[@CanonicalImage = "NULL", @Image = "NULL"]
| +- ID[@CanonicalImage = "EXISTING_PLANNED", @Image = "existing_planned"]
+- ID[@CanonicalImage = "UPDATE_PLANNED_HRS", @Image = "update_planned_hrs"]
@@ -16,7 +16,6 @@
| | | +- 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"]
@@ -33,7 +32,6 @@
| | | +- 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]
@@ -43,14 +41,12 @@
| | | | +- 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]
@@ -63,7 +59,6 @@
| | | | +- 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"]
@@ -77,7 +72,6 @@
| | | | +- 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"]
@@ -91,7 +85,6 @@
| | | +- 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]
@@ -112,7 +105,6 @@
| | | +- 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"]
@@ -126,7 +118,6 @@
| | | +- 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"]
@@ -140,7 +131,6 @@
| | +- 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]
@@ -152,7 +142,6 @@
| | +- 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"]
@@ -160,7 +149,6 @@
| +- 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]
@@ -225,5 +213,4 @@
| | +- 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"]
@@ -16,7 +16,6 @@
| | | +- 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"]
@@ -33,7 +32,6 @@
| | | +- 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]
@@ -50,7 +48,6 @@
| | | | | +- 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]
@@ -63,7 +60,6 @@
| | | | +- 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"]
@@ -77,7 +73,6 @@
| | | | +- 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"]
@@ -91,7 +86,6 @@
| | | +- 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]
@@ -112,7 +106,6 @@
| | | +- 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"]
@@ -126,7 +119,6 @@
| | | +- 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"]
@@ -140,7 +132,6 @@
| | +- 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]
@@ -152,7 +143,6 @@
| | +- 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"]
@@ -160,7 +150,6 @@
| +- 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]
@@ -225,5 +214,4 @@
| | +- 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"]
@@ -25,7 +25,6 @@
| | | | +- 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"]
@@ -47,7 +46,6 @@
| | | +- 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]
@@ -37,7 +37,6 @@
| | +- ID[@CanonicalImage = "DUAL", @Image = "dual"]
| +- TableAlias[@CanonicalImage = "A", @Image = "a"]
| +- ID[@CanonicalImage = "A", @Image = "a"]
| +- KEYWORD_UNRESERVED[@CanonicalImage = "A", @Image = "a"]
+- WhereClause[@CanonicalImage = null]
+- Condition[@CanonicalImage = null]
+- CompoundCondition[@CanonicalImage = null, @Type = null]
@@ -1,3 +1,3 @@
+- Input[@CanonicalImage = null, @ExcludedLinesCount = 0, @ExcludedRangesCount = 0]
+- SqlPlusCommand[@CanonicalImage = "DEFINE PATCH_NAME = ACME_MODULE", @Image = "define patch_name = acme_module "]
+- SqlPlusCommand[@CanonicalImage = "SPOOL &PATCH_NAME. . LOG", @Image = "spool &patch_name. . log "]
+- SqlPlusCommand[@CanonicalImage = "DEFINE PATCH_NAME = ACME_MODULE", @Image = "DEFINE PATCH_NAME = ACME_MODULE "]
+- SqlPlusCommand[@CanonicalImage = "SPOOL &PATCH_NAME. . LOG", @Image = "SPOOL &PATCH_NAME. . LOG "]
@@ -9,8 +9,8 @@ DECLARE
BEGIN
OPEN emp_cv FOR -- open cursor variable
'SELECT ename, sal FROM emp WHERE sal > :s' USING my_sal;
open cursor for 'query' USING variable;
open cursor for 'query' USING IN variable;
open cursor for 'query' USING OUT variable, IN othervariable;
open cursor for 'query' USING IN OUT variable;
open cursorvar for 'query' USING variable;
open cursorvar for 'query' USING IN variable;
open cursorvar for 'query' USING OUT variable, IN othervariable;
open cursorvar for 'query' USING IN OUT variable;
END;
@@ -0,0 +1,13 @@
DECLARE
qty_on_hand NUMBER(5);
BEGIN
SELECT quantity INTO qty_on_hand FROM inventory
WHERE product = 'TENNIS RACKET' -- product gets uppercased
AND "Product" = 'tennis racket' -- "Product" gets uppercased and quotes removed
AND Product = 'tennis racket' -- Product gets uppercased
AND "Product info" = 'tennis ' -- "Product info" stays the same
AND "an_id" = 'foo' -- an_id gets uppercased
AND " not an id" = 'foo' -- " not an id" stays the same
FOR UPDATE OF quantity;
COMMIT;
END;
@@ -0,0 +1,62 @@
[Image] or [Truncated image[ Bcol Ecol
L1
[DECLARE] 1 8
L2
[QTY_ON_HAND] 2 13
[NUMBER] 14 20
[(] 20 21
[5] 21 22
[)] 22 23
[;] 23 24
L3
[BEGIN] 1 6
L4
[SELECT] 2 8
[QUANTITY] 9 17
[INTO] 18 22
[QTY_ON_HAND] 23 34
[FROM] 35 39
[INVENTORY] 40 49
L5
[WHERE] 3 8
[PRODUCT] 9 16
[=] 17 18
['TENNIS RACKET'] 19 34
L6
[AND] 5 8
[PRODUCT] 9 18
[=] 19 20
['tennis racket'] 21 36
L7
[AND] 11 14
[PRODUCT] 15 22
[=] 23 24
['tennis racket'] 25 40
L8
[AND] 11 14
["Product info"] 15 29
[=] 30 31
['tennis '] 32 41
L9
[AND] 11 14
[AN_ID] 15 22
[=] 23 24
['foo'] 25 30
L10
[AND] 11 14
[" not an id"] 15 27
[=] 28 29
['foo'] 30 35
L11
[FOR] 3 6
[UPDATE] 7 13
[OF] 14 16
[QUANTITY] 17 25
[;] 25 26
L12
[COMMIT] 2 8
[;] 8 9
L13
[END] 1 4
[;] 4 5
EOF
File diff suppressed because it is too large. Load diff
@@ -2,7 +2,7 @@
L1
[DECLARE] 1 8
L2
[qty_on_hand] 2 13
[QTY_ON_HAND] 2 13
[NUMBER] 14 20
[(] 20 21
[5] 21 22
@@ -12,47 +12,47 @@ L3
[BEGIN] 1 6
L4
[SELECT] 2 8
[quantity] 9 17
[QUANTITY] 9 17
[INTO] 18 22
[qty_on_hand] 23 34
[QTY_ON_HAND] 23 34
[FROM] 35 39
[inventory] 40 49
[INVENTORY] 40 49
L5
[WHERE] 3 8
[product] 9 16
[PRODUCT] 9 16
[=] 17 18
['TENNIS RACKET'] 19 34
L6
[FOR] 3 6
[UPDATE] 7 13
[OF] 14 16
[quantity] 17 25
[QUANTITY] 17 25
[;] 25 26
L7
[IF] 2 4
[qty_on_hand] 5 16
[QTY_ON_HAND] 5 16
[>] 17 18
[0] 19 20
[THEN] 21 25
L8
[UPDATE] 3 9
[inventory] 10 19
[INVENTORY] 10 19
[SET] 20 23
[quantity] 24 32
[QUANTITY] 24 32
[=] 33 34
[quantity] 35 43
[QUANTITY] 35 43
[-] 44 45
[1] 46 47
L9
[WHERE] 4 9
[product] 10 17
[PRODUCT] 10 17
[=] 18 19
['TENNIS RACKET'] 20 35
[;] 35 36
L10
[INSERT] 3 9
[INTO] 10 14
[purchase_record] 15 30
[PURCHASE_RECORD] 15 30
L11
[VALUES] 4 10
[(] 11 12
@@ -66,7 +66,7 @@ L12
L13
[INSERT] 3 9
[INTO] 10 14
[purchase_record] 15 30
[PURCHASE_RECORD] 15 30
L14
[VALUES] 4 10
[(] 11 12
@@ -7,7 +7,7 @@
<test-code>
<description>Example code</description>
<expected-problems>1</expected-problems>
<expected-linenumbers>34</expected-linenumbers>
<expected-linenumbers>35</expected-linenumbers>
<code><![CDATA[
CREATE OR REPLACE PACKAGE BODY update_planned_hrs
IS
@@ -43,7 +43,7 @@ BEGIN
RETURN (existing_hours);
EXCEPTION
WHEN OTHERS THEN NULL;
WHEN OTHERS THEN NULL; -- rule violation
END existing_planned;
@@ -189,8 +189,6 @@ CREATE OR REPLACE PACKAGE BODY foo AS
CARDINALITY VARCHAR2(240);
/** Unreserved Keyword Word CASCADE **/
CASCADE VARCHAR2(240);
/** Unreserved Keyword Word CASE **/
CASE VARCHAR2(240);
/** Unreserved Keyword Word CAST **/
CAST VARCHAR2(240);
/** Unreserved Keyword Word CATEGORY **/
@@ -327,8 +325,6 @@ CREATE OR REPLACE PACKAGE BODY foo AS
CURRENT_TIMESTAMP VARCHAR2(240);
/** Unreserved Keyword Word CURRENT_USER **/
CURRENT_USER VARCHAR2(240);
/** Unreserved Keyword Word CURSOR **/
CURSOR VARCHAR2(240);
/** Unreserved Keyword Word CURSOR_SHARING_EXACT **/
CURSOR_SHARING_EXACT VARCHAR2(240);
/** Unreserved Keyword Word CURSOR_SPECIFIC_SEGMENT **/
@@ -369,8 +365,6 @@ CREATE OR REPLACE PACKAGE BODY foo AS
DEBUG VARCHAR2(240);
/** Unreserved Keyword Word DEC **/
DEC VARCHAR2(240);
/** Unreserved Keyword Word DECLARE **/
DECLARE VARCHAR2(240);
/** Unreserved Keyword Word DECREMENT **/
DECREMENT VARCHAR2(240);
/** Unreserved Keyword Word DECRYPT **/
@@ -471,8 +465,6 @@ CREATE OR REPLACE PACKAGE BODY foo AS
ENCRYPT VARCHAR2(240);
/** Unreserved Keyword Word ENCRYPTION **/
ENCRYPTION VARCHAR2(240);
/** Unreserved Keyword Word END **/
--SRT END VARCHAR2(240);
/** Unreserved Keyword Word END_OUTLINE_DATA **/
END_OUTLINE_DATA VARCHAR2(240);
/** Unreserved Keyword Word ENFORCE **/
@@ -593,8 +585,6 @@ CREATE OR REPLACE PACKAGE BODY foo AS
FRESH VARCHAR2(240);
/** Unreserved Keyword Word FULL **/
FULL VARCHAR2(240);
/** Unreserved Keyword Word FUNCTION **/
--SRT FUNCTION VARCHAR2(240);
/** Unreserved Keyword Word FUNCTIONS **/
FUNCTIONS VARCHAR2(240);
/** Unreserved Keyword Word G **/
@@ -659,8 +649,6 @@ CREATE OR REPLACE PACKAGE BODY foo AS
IDGENERATORS VARCHAR2(240);
/** Unreserved Keyword Word IDLE_TIME **/
IDLE_TIME VARCHAR2(240);
/** Unreserved Keyword Word IF **/
IF VARCHAR2(240);
/** Unreserved Keyword Word IGNORE **/
IGNORE VARCHAR2(240);
/** Unreserved Keyword Word IGNORE_OPTIM_EMBEDDED_HINTS **/
@@ -1739,8 +1727,6 @@ CREATE OR REPLACE PACKAGE BODY foo AS
SPLIT VARCHAR2(240);
/** Unreserved Keyword Word SPREADSHEET **/
SPREADSHEET VARCHAR2(240);
/** Unreserved Keyword Word SQL **/
SQL VARCHAR2(240);
/** Unreserved Keyword Word SQL_TRACE **/
SQL_TRACE VARCHAR2(240);
/** Unreserved Keyword Word SQLLDR **/
@@ -2252,7 +2238,6 @@ CREATE OR REPLACE PACKAGE BODY foo AS
CURRENT_TIME := 'CURRENT_TIME' ; -- CURRENT_TIME VARCHAR2(240)
CURRENT_TIMESTAMP := 'CURRENT_TIMESTAMP' ; -- CURRENT_TIMESTAMP VARCHAR2(240)
CURRENT_USER := 'CURRENT_USER' ; -- CURRENT_USER VARCHAR2(240)
CURSOR := 'CURSOR' ; -- CURSOR VARCHAR2(240)
CURSOR_SHARING_EXACT := 'CURSOR_SHARING_EXACT' ; -- CURSOR_SHARING_EXACT VARCHAR2(240)
CURSOR_SPECIFIC_SEGMENT := 'CURSOR_SPECIFIC_SEGMENT' ; -- CURSOR_SPECIFIC_SEGMENT VARCHAR2(240)
CYCLE := 'CYCLE' ; -- CYCLE VARCHAR2(240)
@@ -2273,7 +2258,6 @@ CREATE OR REPLACE PACKAGE BODY foo AS
DEALLOCATE := 'DEALLOCATE' ; -- DEALLOCATE VARCHAR2(240)
DEBUG := 'DEBUG' ; -- DEBUG VARCHAR2(240)
--SRT 20110508 DEC := 'DEC' ; -- DEC VARCHAR2(240)
--SRT 20110508 DECLARE := 'DECLARE' ; -- DECLARE VARCHAR2(240)
DECREMENT := 'DECREMENT' ; -- DECREMENT VARCHAR2(240)
DECRYPT := 'DECRYPT' ; -- DECRYPT VARCHAR2(240)
DEFERRABLE := 'DEFERRABLE' ; -- DEFERRABLE VARCHAR2(240)
@@ -2324,7 +2308,6 @@ CREATE OR REPLACE PACKAGE BODY foo AS
ENABLE := 'ENABLE' ; -- ENABLE VARCHAR2(240)
ENCRYPT := 'ENCRYPT' ; -- ENCRYPT VARCHAR2(240)
ENCRYPTION := 'ENCRYPTION' ; -- ENCRYPTION VARCHAR2(240)
--SRT END := 'END' ; END VARCHAR2(240)
END_OUTLINE_DATA := 'END_OUTLINE_DATA' ; -- END_OUTLINE_DATA VARCHAR2(240)
ENFORCE := 'ENFORCE' ; -- ENFORCE VARCHAR2(240)
ENFORCED := 'ENFORCED' ; -- ENFORCED VARCHAR2(240)
@@ -2385,7 +2368,6 @@ CREATE OR REPLACE PACKAGE BODY foo AS
FREEPOOLS := 'FREEPOOLS' ; -- FREEPOOLS VARCHAR2(240)
FRESH := 'FRESH' ; -- FRESH VARCHAR2(240)
FULL := 'FULL' ; -- FULL VARCHAR2(240)
--SRT FUNCTION := 'FUNCTION' ; FUNCTION VARCHAR2(240)
FUNCTIONS := 'FUNCTIONS' ; -- FUNCTIONS VARCHAR2(240)
G := 'G' ; -- G VARCHAR2(240)
GATHER_PLAN_STATISTICS := 'GATHER_PLAN_STATISTICS' ; -- GATHER_PLAN_STATISTICS VARCHAR2(240)
@@ -2418,7 +2400,6 @@ CREATE OR REPLACE PACKAGE BODY foo AS
IDENTITY := 'IDENTITY' ; -- IDENTITY VARCHAR2(240)
IDGENERATORS := 'IDGENERATORS' ; -- IDGENERATORS VARCHAR2(240)
IDLE_TIME := 'IDLE_TIME' ; -- IDLE_TIME VARCHAR2(240)
--SRT 20110508 IF := 'IF' ; -- IF VARCHAR2(240)
IGNORE := 'IGNORE' ; -- IGNORE VARCHAR2(240)
IGNORE_OPTIM_EMBEDDED_HINTS := 'IGNORE_OPTIM_EMBEDDED_HINTS' ; -- IGNORE_OPTIM_EMBEDDED_HINTS VARCHAR2(240)
IGNORE_WHERE_CLAUSE := 'IGNORE_WHERE_CLAUSE' ; -- IGNORE_WHERE_CLAUSE VARCHAR2(240)
@@ -2957,7 +2938,6 @@ CREATE OR REPLACE PACKAGE BODY foo AS
SPFILE := 'SPFILE' ; -- SPFILE VARCHAR2(240)
SPLIT := 'SPLIT' ; -- SPLIT VARCHAR2(240)
SPREADSHEET := 'SPREADSHEET' ; -- SPREADSHEET VARCHAR2(240)
SQL := 'SQL' ; -- SQL VARCHAR2(240)
SQL_TRACE := 'SQL_TRACE' ; -- SQL_TRACE VARCHAR2(240)
SQLLDR := 'SQLLDR' ; -- SQLLDR VARCHAR2(240)
STANDALONE := 'STANDALONE' ; -- STANDALONE VARCHAR2(240)
@@ -189,8 +189,6 @@ CREATE OR REPLACE TYPE typ_unreserved_keywords AS OBJECT
CARDINALITY VARCHAR2(240),
/** Unreserved Keyword Word CASCADE **/
CASCADE VARCHAR2(240),
/** Unreserved Keyword Word CASE **/
CASE VARCHAR2(240),
/** Unreserved Keyword Word CAST **/
CAST VARCHAR2(240),
/** Unreserved Keyword Word CATEGORY **/
@@ -327,8 +325,6 @@ CREATE OR REPLACE TYPE typ_unreserved_keywords AS OBJECT
CURRENT_TIMESTAMP VARCHAR2(240),
/** Unreserved Keyword Word CURRENT_USER **/
CURRENT_USER VARCHAR2(240),
/** Unreserved Keyword Word CURSOR **/
CURSOR VARCHAR2(240),
/** Unreserved Keyword Word CURSOR_SHARING_EXACT **/
CURSOR_SHARING_EXACT VARCHAR2(240),
/** Unreserved Keyword Word CURSOR_SPECIFIC_SEGMENT **/
@@ -369,8 +365,6 @@ CREATE OR REPLACE TYPE typ_unreserved_keywords AS OBJECT
DEBUG VARCHAR2(240),
/** Unreserved Keyword Word DEC **/
DEC VARCHAR2(240),
/** Unreserved Keyword Word DECLARE **/
DECLARE VARCHAR2(240),
/** Unreserved Keyword Word DECREMENT **/
DECREMENT VARCHAR2(240),
/** Unreserved Keyword Word DECRYPT **/
@@ -471,8 +465,6 @@ CREATE OR REPLACE TYPE typ_unreserved_keywords AS OBJECT
ENCRYPT VARCHAR2(240),
/** Unreserved Keyword Word ENCRYPTION **/
ENCRYPTION VARCHAR2(240),
/** Unreserved Keyword Word END **/
--SRT END VARCHAR2(240),
/** Unreserved Keyword Word END_OUTLINE_DATA **/
END_OUTLINE_DATA VARCHAR2(240),
/** Unreserved Keyword Word ENFORCE **/
@@ -593,8 +585,6 @@ CREATE OR REPLACE TYPE typ_unreserved_keywords AS OBJECT
FRESH VARCHAR2(240),
/** Unreserved Keyword Word FULL **/
FULL VARCHAR2(240),
/** Unreserved Keyword Word FUNCTION **/
--SRT FUNCTION VARCHAR2(240),
/** Unreserved Keyword Word FUNCTIONS **/
FUNCTIONS VARCHAR2(240),
/** Unreserved Keyword Word G **/
@@ -659,8 +649,6 @@ CREATE OR REPLACE TYPE typ_unreserved_keywords AS OBJECT
IDGENERATORS VARCHAR2(240),
/** Unreserved Keyword Word IDLE_TIME **/
IDLE_TIME VARCHAR2(240),
/** Unreserved Keyword Word IF **/
IF VARCHAR2(240),
/** Unreserved Keyword Word IGNORE **/
IGNORE VARCHAR2(240),
/** Unreserved Keyword Word IGNORE_OPTIM_EMBEDDED_HINTS **/
@@ -1739,8 +1727,6 @@ CREATE OR REPLACE TYPE typ_unreserved_keywords AS OBJECT
SPLIT VARCHAR2(240),
/** Unreserved Keyword Word SPREADSHEET **/
SPREADSHEET VARCHAR2(240),
/** Unreserved Keyword Word SQL **/
SQL VARCHAR2(240),
/** Unreserved Keyword Word SQL_TRACE **/
SQL_TRACE VARCHAR2(240),
/** Unreserved Keyword Word SQLLDR **/
@@ -106,8 +106,6 @@ CREATE OR REPLACE PACKAGE pkg_unreserved AS
BECOME VARCHAR2(240);
/** Unreserved Keyword Word BEFORE **/
BEFORE VARCHAR2(240);
/** Unreserved Keyword Word BEGIN **/
--SRTBEGIN VARCHAR2(240);
/** Unreserved Keyword Word BEGIN_OUTLINE_DATA **/
BEGIN_OUTLINE_DATA VARCHAR2(240);
/** Unreserved Keyword Word BEHALF **/
@@ -188,8 +186,6 @@ CREATE OR REPLACE PACKAGE pkg_unreserved AS
CARDINALITY VARCHAR2(240);
/** Unreserved Keyword Word CASCADE **/
CASCADE VARCHAR2(240);
/** Unreserved Keyword Word CASE **/
CASE VARCHAR2(240);
/** Unreserved Keyword Word CAST **/
CAST VARCHAR2(240);
/** Unreserved Keyword Word CATEGORY **/
@@ -326,8 +322,6 @@ CREATE OR REPLACE PACKAGE pkg_unreserved AS
CURRENT_TIMESTAMP VARCHAR2(240);
/** Unreserved Keyword Word CURRENT_USER **/
CURRENT_USER VARCHAR2(240);
/** Unreserved Keyword Word CURSOR **/
CURSOR VARCHAR2(240);
/** Unreserved Keyword Word CURSOR_SHARING_EXACT **/
CURSOR_SHARING_EXACT VARCHAR2(240);
/** Unreserved Keyword Word CURSOR_SPECIFIC_SEGMENT **/
@@ -368,8 +362,6 @@ CREATE OR REPLACE PACKAGE pkg_unreserved AS
DEBUG VARCHAR2(240);
/** Unreserved Keyword Word DEC **/
DEC VARCHAR2(240);
/** Unreserved Keyword Word DECLARE **/
DECLARE VARCHAR2(240);
/** Unreserved Keyword Word DECREMENT **/
DECREMENT VARCHAR2(240);
/** Unreserved Keyword Word DECRYPT **/
@@ -470,8 +462,6 @@ CREATE OR REPLACE PACKAGE pkg_unreserved AS
ENCRYPT VARCHAR2(240);
/** Unreserved Keyword Word ENCRYPTION **/
ENCRYPTION VARCHAR2(240);
/** Unreserved Keyword Word END **/
--SRT END VARCHAR2(240);
/** Unreserved Keyword Word END_OUTLINE_DATA **/
END_OUTLINE_DATA VARCHAR2(240);
/** Unreserved Keyword Word ENFORCE **/
@@ -592,8 +582,6 @@ CREATE OR REPLACE PACKAGE pkg_unreserved AS
FRESH VARCHAR2(240);
/** Unreserved Keyword Word FULL **/
FULL VARCHAR2(240);
/** Unreserved Keyword Word FUNCTION **/
--SRT FUNCTION VARCHAR2(240);
/** Unreserved Keyword Word FUNCTIONS **/
FUNCTIONS VARCHAR2(240);
/** Unreserved Keyword Word G **/
@@ -658,8 +646,6 @@ CREATE OR REPLACE PACKAGE pkg_unreserved AS
IDGENERATORS VARCHAR2(240);
/** Unreserved Keyword Word IDLE_TIME **/
IDLE_TIME VARCHAR2(240);
/** Unreserved Keyword Word IF **/
IF VARCHAR2(240);
/** Unreserved Keyword Word IGNORE **/
IGNORE VARCHAR2(240);
/** Unreserved Keyword Word IGNORE_OPTIM_EMBEDDED_HINTS **/
@@ -1738,8 +1724,6 @@ CREATE OR REPLACE PACKAGE pkg_unreserved AS
SPLIT VARCHAR2(240);
/** Unreserved Keyword Word SPREADSHEET **/
SPREADSHEET VARCHAR2(240);
/** Unreserved Keyword Word SQL **/
SQL VARCHAR2(240);
/** Unreserved Keyword Word SQL_TRACE **/
SQL_TRACE VARCHAR2(240);
/** Unreserved Keyword Word SQLLDR **/
Loaded 30 of 281 files, more files were not shown because too many files have changed in this diff. Show more