A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/pmd/pmd/issues/1047 below:

[plsql] ParseException when parsing EXECUTE IMMEDIATE · Issue #1047 · pmd/pmd · GitHub

Affects PMD Version: 6.2 (from net.sourceforge.pmd.eclipse - 4.0.16.v20180412-0833)

Rule: parsing a .sql file that has execute immediate with into and using in multiline

Description:

There were processing errors!
test.sql: Error while parsing test.sql net.sourceforge.pmd.PMDException: Error while parsing test.sql
	at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:98)
	at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:50)
	at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:75)
	at net.sourceforge.pmd.processor.MonoThreadProcessor.runAnalysis(MonoThreadProcessor.java:29)
	at net.sourceforge.pmd.processor.AbstractPMDProcessor.processFiles(AbstractPMDProcessor.java:111)
	at net.sourceforge.pmd.eclipse.runtime.cmd.BaseVisitor.reviewResource(BaseVisitor.java:366)
	at net.sourceforge.pmd.eclipse.runtime.cmd.ResourceVisitor.visit(ResourceVisitor.java:30)
	at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:120)
	at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:84)
	at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82)
	at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:129)
	at org.eclipse.core.internal.resources.Resource.accept(Resource.java:94)
	at org.eclipse.core.internal.resources.Resource.accept(Resource.java:52)
	at org.eclipse.core.internal.resources.Resource.accept(Resource.java:117)
	at org.eclipse.core.internal.resources.Resource.accept(Resource.java:105)
	at net.sourceforge.pmd.eclipse.runtime.cmd.ReviewCodeCmd.processResource(ReviewCodeCmd.java:481)
	at net.sourceforge.pmd.eclipse.runtime.cmd.ReviewCodeCmd.processResources(ReviewCodeCmd.java:431)
	at net.sourceforge.pmd.eclipse.runtime.cmd.ReviewCodeCmd.execute(ReviewCodeCmd.java:221)
	at net.sourceforge.pmd.eclipse.runtime.cmd.JobCommandProcessor$1.run(JobCommandProcessor.java:93)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: net.sourceforge.pmd.lang.plsql.ast.ParseException: Encountered " <CHARACTER_LITERAL> "\'P\' "" at line 8, column 15.
Was expecting one of:
    "/" ...
    ";" ...
    "=" ...
    "!" ...
    "<" ...
    ">" ...
    "+" ...
    "-" ...
    "||" ...
    "**" ...
    "*" ...
    "AND" ...
    "BETWEEN" ...
    "FROM" ...
    "IN" ...
    "IS" ...
    "LIKE" ...
    "MEMBER" ...
    "MOD" ...
    "NOT" ...
    "OR" ...
    "MULTISET" ...
    "SUBMULTISET" ...
    
	at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.generateParseException(PLSQLParser.java:40789)
	at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.jj_consume_token(PLSQLParser.java:40643)
	at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.UnlabelledStatement(PLSQLParser.java:9691)
	at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.Statement(PLSQLParser.java:9990)
	at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.ProgramUnit(PLSQLParser.java:5948)
	at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.Global(PLSQLParser.java:496)
	at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.Input(PLSQLParser.java:194)
	at net.sourceforge.pmd.lang.plsql.PLSQLParser.parse(PLSQLParser.java:47)
	at net.sourceforge.pmd.SourceCodeProcessor.parse(SourceCodeProcessor.java:110)
	at net.sourceforge.pmd.SourceCodeProcessor.processSource(SourceCodeProcessor.java:180)
	at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:95)
	... 19 more

Code Sample demonstrating the issue:

CREATE OR REPLACE PROCEDURE test ( p_num_reg OUT number )
 AS
    v_query clob;
 BEGIN
        v_query:='select count(1) from test_tbl where id =:param';

        execute immediate v_query into p_num_reg
        USING 'P';
  END test;

Removing the linebreak in the execute immediate bypass the bug:

CREATE OR REPLACE PROCEDURE test ( p_num_reg OUT number )
 AS
    v_query clob;
 BEGIN
        v_query:='select count(1) from test_tbl where id =:param';

        execute immediate v_query into p_num_reg USING 'P';
END test;

Running PMD through: [Other - Eclipse Plugin]


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4