如何在动态查询中包含'?

时间:2019-05-20 10:44:57

标签: dynamic teradata

我需要生成这样的查询

从test_app.table中选择max(batch_sk)INTO ln_batch在哪里categ_cd ='ABC';

此“ ABC”作为过程(输入代码)中的输入参数出现。 我尝试了以下提到的查询的不同版本,但没有获得正确的查询。

SET lv_query ='SELECT max(batch_sk)INTO ln_batch来自test_app.table WHATE categ_cd =''''|| in_code ||'';

如何在查询中包括那些'?

1 个答案:

答案 0 :(得分:0)

这里有些错误。

  1. 不匹配/未转义的报价
  2. 串联对字符串进行操作,没有隐式     从TIMESTAMP到VARCHAR的转换。您首先需要使用显式CASTTO_CHAR等进行转换。
  3. SELECT … INTO不允许用作动态SQL。也许带有宿主变量的参数化静态SQL?

    SELECT max(batch_sk) INTO ln_batch FROM test_app.table WHERE categ_cd=:in_code;

    否则,您需要一个动态游标才能将值作为文字提供

    DECLARE lv_cur CURSOR for lv_stmt;
    SET lv_query ='SELECT max(batch_sk) FROM test_app.table WHERE categ_cd = '''||in_code||'''';
    PREPARE lv_stmt FROM lv_query;
    OPEN lv_cur;
    FETCH  lv_cur INTO ln_batch;
    CLOSE lv_cur;