[plsql] Support Error Logging in INSERT, UPDATE, DELETE

Fixes #2779
This commit is contained in:
Andreas Dangel
2024-06-07 12:16:43 +02:00
parent 28c6c8e121
commit d47ca10029
5 changed files with 202 additions and 4 deletions

View File

@@ -27,6 +27,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/**
* Add support Error Logging for INSERT, UPDATE, DELETE
*
* Andreas Dangel 06/2024
*====================================================================
* Add support for Select statement within OPEN FOR Statements
*
* Andreas Dangel 09/2021
@@ -2087,7 +2091,7 @@ ASTTableReference TableReference() :
{
QueryTableExpression()
[ LOOKAHEAD(2) TableAlias() ]
[ LOOKAHEAD(2, {!getToken(1).getImage().equalsIgnoreCase("LOG")}) TableAlias() ]
{ return jjtThis; }
}
@@ -2457,7 +2461,7 @@ ASTCursorForLoopStatement CursorForLoopStatement() :
}
/**
* See https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/INSERT.html#GUID-903F8043-0254-4EE9-ACC1-CB8AC0AF3423
* https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/INSERT.html#GUID-903F8043-0254-4EE9-ACC1-CB8AC0AF3423
*/
ASTInsertStatement InsertStatement() :
{}
@@ -2470,6 +2474,7 @@ ASTSingleTableInsert SingleTableInsert() :
{}
{
InsertIntoClause() ( ValuesClause() [ ReturningClause() ] | Subquery() )
[ ErrorLoggingClause() ]
{ return jjtThis; }
}
@@ -2622,7 +2627,8 @@ ASTUpdateSetClause UpdateSetClause() :
}
/**
* https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/UPDATE.html#GUID-027A462D-379D-4E35-8611-410F3AC8FDA5__I2126358
* https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/UPDATE.html#GUID-027A462D-379D-4E35-8611-410F3AC8FDA5__I2126358
* https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/DELETE.html#GUID-156845A5-B626-412B-9F95-8869B988ABD7__I2122564
*/
ASTReturningClause ReturningClause() :
{}
@@ -2632,7 +2638,9 @@ ASTReturningClause ReturningClause() :
}
/**
* https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/UPDATE.html#GUID-027A462D-379D-4E35-8611-410F3AC8FDA5__BCEEAAGC
* https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/INSERT.html#GUID-903F8043-0254-4EE9-ACC1-CB8AC0AF3423__BGBDIGAH
* https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/UPDATE.html#GUID-027A462D-379D-4E35-8611-410F3AC8FDA5__BCEEAAGC
* https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/DELETE.html#GUID-156845A5-B626-412B-9F95-8869B988ABD7__CEGCHDJF
*/
ASTErrorLoggingClause ErrorLoggingClause() :
{}
@@ -2645,12 +2653,17 @@ ASTErrorLoggingClause ErrorLoggingClause() :
}
/**
* https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/DELETE.html#GUID-156845A5-B626-412B-9F95-8869B988ABD7
*/
ASTDeleteStatement DeleteStatement() :
{}
{
<DELETE> [ <FROM> ]
( TableReference() | <ONLY> "(" TableReference() ")" )
[ WhereClause() ]
[ ReturningClause() ]
[ ErrorLoggingClause() ]
{ return jjtThis; }
}