【问题标题】:Executing sql from datatable row从数据表行执行sql
【发布时间】:2015-12-11 15:16:40
【问题描述】:

我有一些从应用程序执行的 sql 查询的表。 例如,id=1 的查询之一是:

select * from customer where status='A'

我想要的是在该查询中进行一些替换并返回该已执行查询的行。我想在sql中做所有事情。 例如,如果我说

select id, query from queries where id=1

我会得到结果:

1 | select * from customer where status='A'

如果我说:

从 id=1 的查询中选择 id, replace(query, 'A', 'N')

我会得到:

1 | select * from customer where status='N'

我想执行这个被替换的查询并查看它的结果。 这可能只用sql吗? 我正在使用 oracle 数据库

【问题讨论】:

    标签: sql oracle dynamic


    【解决方案1】:

    不确定这是否是最好的解决方案,但这是我现在能想到的: 创建一个管道函数,它将为您返回所需类型记录的表类型。 然后将其称为:

    select * from table(your_function(parm1, parm2, parm3));
    

    作为参数,您将提供替换基本查询中的文本所需的所有信息,例如查询 ID、要搜索的字符串、要替换的字符串等。在函数中,您将从表中获取查询,替换占位符,执行它并输出行。 或者甚至编写一个查询,该查询将获得精确的查询语句作为 varchar/clob,然后按“原样”执行它并将行输出到调用者。

    这将通过一个简单的示例向您解释流水线函数: https://oracle-base.com/articles/misc/pipelined-table-functions

    【讨论】:

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