Exemplo n.º 1
0
 /** Unary boolean expression in executable SQL statement */
 public Integer execBoolUnarySql(HplsqlParser.Bool_expr_unaryContext ctx) {
   StringBuilder sql = new StringBuilder();
   if (ctx.T_IS() != null) {
     sql.append(evalPop(ctx.expr(0)).toString());
     sql.append(" " + exec.getText(ctx, ctx.T_IS().getSymbol(), ctx.T_NULL().getSymbol()));
   } else if (ctx.T_BETWEEN() != null) {
     sql.append(evalPop(ctx.expr(0)).toString());
     sql.append(" " + ctx.T_BETWEEN().getText() + " ");
     sql.append(evalPop(ctx.expr(1)).toString());
     sql.append(" " + ctx.T_AND().getText() + " ");
     sql.append(evalPop(ctx.expr(2)).toString());
   } else if (ctx.T_EXISTS() != null) {
     exec.append(sql, exec.nvl(ctx.T_NOT(), ctx.T_EXISTS()), ctx.T_OPEN_P());
     exec.append(
         sql,
         evalPop(ctx.select_stmt()).toString(),
         ctx.T_OPEN_P().getSymbol(),
         ctx.select_stmt().getStart());
     exec.append(
         sql, ctx.T_CLOSE_P().getText(), ctx.select_stmt().stop, ctx.T_CLOSE_P().getSymbol());
   } else if (ctx.bool_expr_single_in() != null) {
     singleInClauseSql(ctx.bool_expr_single_in(), sql);
   } else if (ctx.bool_expr_multi_in() != null) {
     multiInClauseSql(ctx.bool_expr_multi_in(), sql);
   }
   exec.stackPush(sql);
   return 0;
 }
Exemplo n.º 2
0
 /** Single value IN clause in executable SQL statement */
 public void singleInClauseSql(HplsqlParser.Bool_expr_single_inContext ctx, StringBuilder sql) {
   sql.append(evalPop(ctx.expr(0)).toString() + " ");
   exec.append(sql, exec.nvl(ctx.T_NOT(), ctx.T_IN()), ctx.T_OPEN_P());
   if (ctx.select_stmt() != null) {
     exec.append(
         sql,
         evalPop(ctx.select_stmt()).toString(),
         ctx.T_OPEN_P().getSymbol(),
         ctx.select_stmt().getStart());
     exec.append(
         sql, ctx.T_CLOSE_P().getText(), ctx.select_stmt().stop, ctx.T_CLOSE_P().getSymbol());
   } else {
     int cnt = ctx.expr().size();
     for (int i = 1; i < cnt; i++) {
       sql.append(evalPop(ctx.expr(i)).toString());
       if (i + 1 < cnt) {
         sql.append(", ");
       }
     }
     sql.append(")");
   }
 }