Search in sources :

Example 1 with OracleReturningClause

use of com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleReturningClause in project druid by alibaba.

the class OracleStatementParser method parseDeleteStatement.

public OracleDeleteStatement parseDeleteStatement() {
    OracleDeleteStatement deleteStatement = new OracleDeleteStatement();
    if (lexer.token() == Token.DELETE) {
        lexer.nextToken();
        if (lexer.token() == Token.COMMENT) {
            lexer.nextToken();
        }
        parseHints(deleteStatement.getHints());
        if (lexer.token() == (Token.FROM)) {
            lexer.nextToken();
        }
        if (identifierEquals("ONLY")) {
            lexer.nextToken();
            accept(Token.LPAREN);
            SQLName tableName = exprParser.name();
            deleteStatement.setTableName(tableName);
            accept(Token.RPAREN);
        } else if (lexer.token() == Token.LPAREN) {
            SQLTableSource tableSource = this.createSQLSelectParser().parseTableSource();
            deleteStatement.setTableSource(tableSource);
        } else {
            SQLName tableName = exprParser.name();
            deleteStatement.setTableName(tableName);
        }
        deleteStatement.setAlias(as());
    }
    if (lexer.token() == (Token.WHERE)) {
        lexer.nextToken();
        deleteStatement.setWhere(this.exprParser.expr());
    }
    if (lexer.token() == Token.RETURNING) {
        OracleReturningClause clause = this.parseReturningClause();
        deleteStatement.setReturning(clause);
    }
    if (identifierEquals("RETURN") || identifierEquals("RETURNING")) {
        throw new ParserException("TODO");
    }
    if (identifierEquals("LOG")) {
        throw new ParserException("TODO");
    }
    return deleteStatement;
}
Also used : ParserException(com.alibaba.druid.sql.parser.ParserException) OracleDeleteStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleDeleteStatement) SQLName(com.alibaba.druid.sql.ast.SQLName) OracleReturningClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleReturningClause)

Example 2 with OracleReturningClause

use of com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleReturningClause in project druid by alibaba.

the class OracleStatementParser method parseReturningClause.

public OracleReturningClause parseReturningClause() {
    OracleReturningClause clause = null;
    if (lexer.token() == Token.RETURNING) {
        lexer.nextToken();
        clause = new OracleReturningClause();
        for (; ; ) {
            SQLExpr item = exprParser.expr();
            clause.addItem(item);
            if (lexer.token() == Token.COMMA) {
                lexer.nextToken();
                continue;
            }
            break;
        }
        accept(Token.INTO);
        for (; ; ) {
            SQLExpr item = exprParser.expr();
            clause.addValue(item);
            if (lexer.token() == Token.COMMA) {
                lexer.nextToken();
                continue;
            }
            break;
        }
    }
    return clause;
}
Also used : SQLExpr(com.alibaba.druid.sql.ast.SQLExpr) OracleReturningClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleReturningClause)

Example 3 with OracleReturningClause

use of com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleReturningClause in project druid by alibaba.

the class OracleASTVisitorAdapterTest method test_adapter.

public void test_adapter() throws Exception {
    OracleASTVisitorAdapter adapter = new OracleASTVisitorAdapter();
    new OraclePLSQLCommitStatement().accept(adapter);
    new OracleAnalytic().accept(adapter);
    new OracleAnalyticWindowing().accept(adapter);
    new SQLDateExpr().accept(adapter);
    new OracleDbLinkExpr().accept(adapter);
    new OracleSelectForUpdate().accept(adapter);
    new OracleSelectHierachicalQueryClause().accept(adapter);
    new OracleSelectPivot.Item().accept(adapter);
    new OracleSelectPivot().accept(adapter);
    new CheckOption().accept(adapter);
    new ReadOnly().accept(adapter);
    new OracleSelectUnPivot().accept(adapter);
    new SQLTimestampExpr().accept(adapter);
    new PartitionExtensionClause().accept(adapter);
    new VersionsFlashbackQueryClause().accept(adapter);
    new VersionsFlashbackQueryClause().accept(adapter);
    new AsOfFlashbackQueryClause().accept(adapter);
    new SQLGroupingSetExpr().accept(adapter);
    new OracleWithSubqueryEntry().accept(adapter);
    new OracleFileSpecification().accept(adapter);
    new OracleAlterTablespaceAddDataFile().accept(adapter);
    new OracleAlterTablespaceStatement().accept(adapter);
    new SQLCreateSequenceStatement().accept(adapter);
    new SQLLoopStatement().accept(adapter);
    new OracleIntervalExpr().accept(adapter);
    new OracleDeleteStatement().accept(adapter);
    new OracleUpdateStatement().accept(adapter);
    new SampleClause().accept(adapter);
    new OracleSelectTableReference().accept(adapter);
    new SearchClause().accept(adapter);
    new CycleClause().accept(adapter);
    new OracleBinaryFloatExpr().accept(adapter);
    new OracleBinaryDoubleExpr().accept(adapter);
    new OracleCursorExpr().accept(adapter);
    new OracleIsSetExpr().accept(adapter);
    new ReturnRowsClause().accept(adapter);
    new ModelClause().accept(adapter);
    new MainModelClause().accept(adapter);
    new ModelColumnClause().accept(adapter);
    new QueryPartitionClause().accept(adapter);
    new ModelColumn().accept(adapter);
    new ModelRulesClause().accept(adapter);
    new CellAssignmentItem().accept(adapter);
    new CellAssignment().accept(adapter);
    new SQLMergeStatement().accept(adapter);
    new MergeUpdateClause().accept(adapter);
    new MergeInsertClause().accept(adapter);
    new SQLErrorLoggingClause().accept(adapter);
    new OracleReturningClause().accept(adapter);
    new OracleInsertStatement().accept(adapter);
    new InsertIntoClause().accept(adapter);
    new OracleMultiInsertStatement().accept(adapter);
    new ConditionalInsertClause().accept(adapter);
    new ConditionalInsertClauseItem().accept(adapter);
    new OracleSelectQueryBlock().accept(adapter);
    new SQLBlockStatement().accept(adapter);
    new OracleLockTableStatement().accept(adapter);
    new OracleAlterSessionStatement().accept(adapter);
    new OracleExprStatement().accept(adapter);
    new OracleDatetimeExpr().accept(adapter);
    new OracleExceptionStatement().accept(adapter);
    new OracleExceptionStatement.Item().accept(adapter);
    new OracleArgumentExpr().accept(adapter);
    new OracleSetTransactionStatement().accept(adapter);
    new SQLDropSequenceStatement().accept(adapter);
    new OracleDataTypeIntervalDay().accept(adapter);
    new OracleDataTypeIntervalYear().accept(adapter);
    new OracleDataTypeTimestamp().accept(adapter);
    new OracleDropDbLinkStatement().accept(adapter);
    new OracleCreateDatabaseDbLinkStatement().accept(adapter);
    new SQLCreateProcedureStatement().accept(adapter);
    new OracleSavePointStatement().accept(adapter);
    new SQLFetchStatement().accept(adapter);
    new OracleExitStatement().accept(adapter);
    new OracleExplainStatement().accept(adapter);
    new OracleAlterProcedureStatement().accept(adapter);
    new OracleAlterTableDropPartition().accept(adapter);
    new OracleAlterTableTruncatePartition().accept(adapter);
    new OracleAlterTableSplitPartition.TableSpaceItem().accept(adapter);
    new OracleAlterTableSplitPartition.UpdateIndexesClause().accept(adapter);
    new OracleAlterTableSplitPartition.NestedTablePartitionSpec().accept(adapter);
    new OracleAlterTableSplitPartition().accept(adapter);
    new OracleAlterTableModify().accept(adapter);
    new OracleCreateIndexStatement().accept(adapter);
    new OracleAlterIndexStatement().accept(adapter);
    new OracleForStatement().accept(adapter);
    new OracleAlterIndexStatement().accept(adapter);
    new OracleRangeExpr().accept(adapter);
    new OraclePrimaryKey().accept(adapter);
    new OracleCreateTableStatement().accept(adapter);
    new SQLAlterTableRename().accept(adapter);
    new OracleStorageClause().accept(adapter);
    new OracleGotoStatement().accept(adapter);
    new OracleLabelStatement().accept(adapter);
    new SQLParameter().accept(adapter);
    new OracleCommitStatement().accept(adapter);
    new OracleAlterTriggerStatement().accept(adapter);
    new OracleAlterSynonymStatement().accept(adapter);
    new AsOfSnapshotClause().accept(adapter);
    new OracleAlterViewStatement().accept(adapter);
    new OracleAlterTableMoveTablespace().accept(adapter);
    new OracleSizeExpr().accept(adapter);
}
Also used : OracleDropDbLinkStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleDropDbLinkStatement) OracleWithSubqueryEntry(com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleWithSubqueryEntry) ModelColumnClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.ModelColumnClause) SQLTimestampExpr(com.alibaba.druid.sql.ast.expr.SQLTimestampExpr) ModelClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause) MainModelClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.MainModelClause) ConditionalInsertClauseItem(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.ConditionalInsertClauseItem) OracleDataTypeTimestamp(com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeTimestamp) OracleExprStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleExprStatement) OracleAnalytic(com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleAnalytic) OracleBinaryDoubleExpr(com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleBinaryDoubleExpr) OracleAlterTableSplitPartition(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableSplitPartition) OracleDataTypeIntervalYear(com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeIntervalYear) AsOfFlashbackQueryClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.FlashbackQueryClause.AsOfFlashbackQueryClause) OracleIntervalExpr(com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleIntervalExpr) OracleSelectPivot(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectPivot) OracleSelectUnPivot(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectUnPivot) SQLParameter(com.alibaba.druid.sql.ast.SQLParameter) OracleGotoStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleGotoStatement) InsertIntoClause(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.InsertIntoClause) OracleRangeExpr(com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleRangeExpr) OracleAlterSynonymStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSynonymStatement) OracleCursorExpr(com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleCursorExpr) OracleCreateIndexStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleCreateIndexStatement) VersionsFlashbackQueryClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.FlashbackQueryClause.VersionsFlashbackQueryClause) ModelColumn(com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.ModelColumn) OracleBinaryFloatExpr(com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleBinaryFloatExpr) OracleAlterTablespaceAddDataFile(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTablespaceAddDataFile) OracleAlterSessionStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSessionStatement) ConditionalInsertClause(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.ConditionalInsertClause) CheckOption(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectRestriction.CheckOption) OracleAlterTableModify(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableModify) OraclePrimaryKey(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OraclePrimaryKey) OracleSetTransactionStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSetTransactionStatement) CellAssignmentItem(com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.CellAssignmentItem) OracleFileSpecification(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleFileSpecification) OracleReturningClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleReturningClause) OracleCreateDatabaseDbLinkStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleCreateDatabaseDbLinkStatement) SearchClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.SearchClause) SampleClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.SampleClause) OracleAlterTableMoveTablespace(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableMoveTablespace) OracleAlterTriggerStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTriggerStatement) OracleAlterViewStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterViewStatement) OracleAlterTableTruncatePartition(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableTruncatePartition) OracleExplainStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleExplainStatement) OracleSizeExpr(com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleSizeExpr) CycleClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.CycleClause) OracleLockTableStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleLockTableStatement) MergeUpdateClause(com.alibaba.druid.sql.ast.statement.SQLMergeStatement.MergeUpdateClause) OracleSelectTableReference(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectTableReference) OracleAnalyticWindowing(com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleAnalyticWindowing) OracleIsSetExpr(com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleIsSetExpr) OracleDatetimeExpr(com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleDatetimeExpr) ReadOnly(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectRestriction.ReadOnly) OracleAlterProcedureStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterProcedureStatement) OracleSelectForUpdate(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectForUpdate) PartitionExtensionClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.PartitionExtensionClause) OracleArgumentExpr(com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleArgumentExpr) OracleUpdateStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUpdateStatement) OracleAlterIndexStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterIndexStatement) OracleInsertStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleInsertStatement) OracleSelectQueryBlock(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectQueryBlock) OracleDbLinkExpr(com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleDbLinkExpr) OracleAlterTablespaceStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTablespaceStatement) MainModelClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.MainModelClause) OracleForStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleForStatement) OracleExitStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleExitStatement) OracleStorageClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleStorageClause) CellAssignment(com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.CellAssignment) ModelRulesClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.ModelRulesClause) OracleCommitStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleCommitStatement) SQLGroupingSetExpr(com.alibaba.druid.sql.ast.expr.SQLGroupingSetExpr) OracleAlterTableDropPartition(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableDropPartition) OracleSavePointStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSavePointStatement) ReturnRowsClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.ReturnRowsClause) OracleDeleteStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleDeleteStatement) OracleLabelStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleLabelStatement) OraclePLSQLCommitStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OraclePLSQLCommitStatement) OracleASTVisitorAdapter(com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitorAdapter) OracleMultiInsertStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement) QueryPartitionClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.QueryPartitionClause) OracleSelectHierachicalQueryClause(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectHierachicalQueryClause) OracleExceptionStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleExceptionStatement) AsOfSnapshotClause(com.alibaba.druid.sql.dialect.oracle.ast.clause.FlashbackQueryClause.AsOfSnapshotClause) OracleCreateTableStatement(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleCreateTableStatement) SQLDateExpr(com.alibaba.druid.sql.ast.expr.SQLDateExpr) OracleDataTypeIntervalDay(com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeIntervalDay) MergeInsertClause(com.alibaba.druid.sql.ast.statement.SQLMergeStatement.MergeInsertClause)

Aggregations

OracleReturningClause (com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleReturningClause)3 SQLExpr (com.alibaba.druid.sql.ast.SQLExpr)1 SQLName (com.alibaba.druid.sql.ast.SQLName)1 SQLParameter (com.alibaba.druid.sql.ast.SQLParameter)1 SQLDateExpr (com.alibaba.druid.sql.ast.expr.SQLDateExpr)1 SQLGroupingSetExpr (com.alibaba.druid.sql.ast.expr.SQLGroupingSetExpr)1 SQLTimestampExpr (com.alibaba.druid.sql.ast.expr.SQLTimestampExpr)1 MergeInsertClause (com.alibaba.druid.sql.ast.statement.SQLMergeStatement.MergeInsertClause)1 MergeUpdateClause (com.alibaba.druid.sql.ast.statement.SQLMergeStatement.MergeUpdateClause)1 OracleDataTypeIntervalDay (com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeIntervalDay)1 OracleDataTypeIntervalYear (com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeIntervalYear)1 OracleDataTypeTimestamp (com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeTimestamp)1 CycleClause (com.alibaba.druid.sql.dialect.oracle.ast.clause.CycleClause)1 AsOfFlashbackQueryClause (com.alibaba.druid.sql.dialect.oracle.ast.clause.FlashbackQueryClause.AsOfFlashbackQueryClause)1 AsOfSnapshotClause (com.alibaba.druid.sql.dialect.oracle.ast.clause.FlashbackQueryClause.AsOfSnapshotClause)1 VersionsFlashbackQueryClause (com.alibaba.druid.sql.dialect.oracle.ast.clause.FlashbackQueryClause.VersionsFlashbackQueryClause)1 ModelClause (com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause)1 CellAssignment (com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.CellAssignment)1 CellAssignmentItem (com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.CellAssignmentItem)1 MainModelClause (com.alibaba.druid.sql.dialect.oracle.ast.clause.ModelClause.MainModelClause)1