Issue 3106: Use StringExpression, test case renamed, moved plsql to resource folder.

This commit is contained in:
Henning von Bargen committed 2021-02-12 09:48:27 +01:00
1 parent 34eb080884
commit ac1b5ed159
3 files changed
+14 -3

No files matched your search

+1 -1
View File
@@ -2686,7 +2686,7 @@ ASTFetchStatement FetchStatement() :
ASTEmbeddedSqlStatement EmbeddedSqlStatement() :
{}
{
<EXECUTE> <IMMEDIATE> Expression()
<EXECUTE> <IMMEDIATE> StringExpression()
[ <INTO> Name() ("," Name())* ]
[ <USING> [ <IN> [ <OUT> ] | <OUT> ] Expression() ("," [ <IN> [ <OUT> ] | <OUT> ] Expression())* ]
[ ( <RETURN> | <RETURNING> ) <INTO> Expression() ("," Expression())*] ";"
@@ -75,7 +75,7 @@ public class PLSQLParserTest extends AbstractPLSQLParserTst {
}
@Test
public void testCaseIssue3106() {
plsql.parse("CREATE OR REPLACE PROCEDURE bar\nIS\n v_link varchar2(10) := 'xxx';\nBEGIN\n EXECUTE IMMEDIATE 'drop database link ' || v_link;\nEND bar;");
public void testExecuteImmediateIssue3106() {
plsql.parseResource("ExecuteImmediateIssue3106.pls");
}
}
@@ -0,0 +1,11 @@
--
-- BSD-style license; for more info see http://pmd.sourceforge.net/license.html
--
CREATE OR REPLACE PROCEDURE bar
IS
v_link varchar2(10) := 'xxx';
BEGIN
-- EXECUTE IMMEDIATE with an expression instead of just a literal or variable.
EXECUTE IMMEDIATE 'drop database link ' || v_link;
END bar;