File tree Expand file tree Collapse file tree 4 files changed +42
-2
lines changed
java/net/sf/jsqlparser/statement/execute
jjtree/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/statement/execute Expand file tree Collapse file tree 4 files changed +42
-2
lines changed Original file line number Diff line number Diff line change @@ -55,6 +55,7 @@ Also I would like to know about needed examples or documentation stuff.
5555
5656## Extensions in the latest SNAPSHOT version 2.0
5757
58+ * support of named parameters for execute: ** EXEC procedure @param = 'foo'**
5859* support multivalue set statement
5960* support of ** describe**
6061* support of ** explain**
Original file line number Diff line number Diff line change 22 * #%L
33 * JSQLParser library
44 * %%
5- * Copyright (C) 2004 - 2014 JSQLParser
5+ * Copyright (C) 2004 - 2019 JSQLParser
66 * %%
77 * This program is free software: you can redistribute it and/or modify
88 * it under the terms of the GNU Lesser General Public License as
Original file line number Diff line number Diff line change 22 * #%L
33 * JSQLParser library
44 * %%
5- * Copyright (C) 2004 - 2014 JSQLParser
5+ * Copyright (C) 2004 - 2019 JSQLParser
66 * %%
77 * This program is free software: you can redistribute it and/or modify
88 * it under the terms of the GNU Lesser General Public License as
@@ -3039,10 +3039,25 @@ RowConstructor RowConstructor(): {
30393039 }
30403040}
30413041
3042+ EqualsTo VariableExpression(): {
3043+ Expression left;
3044+ Expression right;
3045+ } {
3046+ left = UserVariable() "=" right = SimpleExpression()
3047+ {
3048+ EqualsTo equals = new EqualsTo();
3049+ equals.setLeftExpression(left);
3050+ equals.setRightExpression(right);
3051+ return equals;
3052+ }
3053+ }
3054+
30423055Execute Execute(): {
30433056 List<String> funcName;
30443057 ExpressionList expressionList = null;
30453058 Execute execute = new Execute();
3059+ List<Expression> namedExprList;
3060+ Expression expr;
30463061}
30473062{
30483063 (<K_EXEC> { execute.setExecType(Execute.EXEC_TYPE.EXEC); }
@@ -3052,6 +3067,10 @@ Execute Execute(): {
30523067 funcName=RelObjectNameList() { execute.setName(funcName); }
30533068
30543069 (
3070+ LOOKAHEAD(3) ( expr = VariableExpression() { namedExprList = new ArrayList<Expression>(); namedExprList.add( expr ); }
3071+ ( "," expr = VariableExpression() { namedExprList.add(expr); })*
3072+ { expressionList = new ExpressionList(namedExprList); } )
3073+ |
30553074 LOOKAHEAD(3) expressionList=SimpleExpressionList()
30563075 |
30573076 ("(" expressionList=SimpleExpressionList() ")" { execute.setParenthesis(true); })
Original file line number Diff line number Diff line change @@ -80,4 +80,24 @@ public void testCallWithMultiname() throws JSQLParserException {
8080 public void testAcceptCallWithParenthesis () throws JSQLParserException {
8181 assertSqlCanBeParsedAndDeparsed ("CALL myproc ('a', 2, 'b')" );
8282 }
83+
84+ @ Test
85+ public void testAcceptExecNamesParameters () throws JSQLParserException {
86+ assertSqlCanBeParsedAndDeparsed ("EXEC procedure @param" );
87+ }
88+
89+ @ Test
90+ public void testAcceptExecNamesParameters2 () throws JSQLParserException {
91+ assertSqlCanBeParsedAndDeparsed ("EXEC procedure @param = 1" );
92+ }
93+
94+ @ Test
95+ public void testAcceptExecNamesParameters3 () throws JSQLParserException {
96+ assertSqlCanBeParsedAndDeparsed ("EXEC procedure @param = 'foo'" );
97+ }
98+
99+ @ Test
100+ public void testAcceptExecNamesParameters4 () throws JSQLParserException {
101+ assertSqlCanBeParsedAndDeparsed ("EXEC procedure @param = 'foo', @param2 = 'foo2'" );
102+ }
83103}
You can’t perform that action at this time.
0 commit comments