Merge branch 'master' into pr-5087
This commit is contained in:
281 files changed
+6773
-8798
No files matched your search
+167
-182
File diff suppressed because it is too large.
Load diff
+1
-1
@@ -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);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -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);
|
||||
};
|
||||
}
|
||||
}
|
||||
+45
@@ -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;
|
||||
|
||||
+243
@@ -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"]
|
||||
+35
-1
@@ -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;
|
||||
/
|
||||
+457
-8
File diff suppressed because it is too large.
Load diff
+44
@@ -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;
|
||||
/
|
||||
+192
@@ -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]
|
||||
|
||||
+2
-2
@@ -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;
|
||||
+13
@@ -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;
|
||||
+62
@@ -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
|
||||
+389
-389
File diff suppressed because it is too large.
Load diff
+1729
File diff suppressed because it is too large.
Load diff
+13
-13
@@ -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
|
||||
|
||||
+2
-2
@@ -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;
|
||||
|
||||
|
||||
-20
@@ -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)
|
||||
|
||||
-14
@@ -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 **/
|
||||
|
||||
-16
@@ -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
Reference in new issue
Block a user