【问题标题】:'Execute Immediate' with Into Clause in HANA在 HANA 中使用 Into 子句“立即执行”
【发布时间】:2014-03-05 10:23:03
【问题描述】:

我有一个需求——我需要读取一个表(表名作为 SP 的输入参数提供),将结果存储在一个临时表中,然后将读取表的计数存储到一个变量中。请告知如何实现这一点。我已经能够使用动态查询读取表及其计数,但无法将结果放入临时表/变量中。 “Select”和“Into”子句似乎不适用于“Execute Immediate”。谢谢。

【问题讨论】:

    标签: hana execute-immediate


    【解决方案1】:

    我不太清楚到底要问什么,但您应该能够以下列方式执行 SELECT 语句:

    CREATE PROCEDURE p1(IN tablename VARCHAR) AS
    BEGIN
       execute immediate 'SELECT * FROM ' || :tablename;
    END;
    

    然后以下语句创建一个表并调用过程来检索结果:

    create table T (i integer);
    insert into T values (123);
    

    以下将生成一个包含一行/列的值为 123 的结果集:

    CALL p1('T')
    

    请注意,对于这种类型的功能,您需要非常小心,不要让任何用户提供的输入直接提供给使用 EXECUTE IMMEDIATE 的过程,以避免 SQL 注入攻击的可能性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 2021-03-09
      相关资源
      最近更新 更多