是否可以在 open-for-using 语句中传递动态数量的绑定参数?

问题描述 投票:0回答:1

我有一个翻译表,如下所示:

模块 钥匙 价值
A 一个 CN 一个
A 一个 艾因斯
A 两个 CN 两个

我想为此表创建一个脚本,为每个不同的模块键组合获取一行,为每种可用语言获取一列。这应该看起来像这样:

模块 钥匙 CN
A 一个 一个 艾因斯
A 两个 两个

我开始构建一个 plsql 脚本来执行动态 SQL 来执行此操作。此 sql 需要为每种语言提供一个绑定参数。语言值来自用户输入,因此我不想将它们连接到动态 sql 中。但是,目前我必须手动将每种语言指定为“open-for-using”子句中的绑定参数:

open rc for varquery using ( 'EN', 'DE' );
dbms_sql.return_result(rc);

是否可以将绑定参数的动态列表传递给它?简单的

using (select distinct ...)
在这里不起作用。

我不确定如何解释文档。如果我理解正确的话,它只讨论任何给定绑定参数可能具有的类型。

动态 SQL 支持所有 SQL 数据类型。例如,绑定参数可以是集合、LOB、对象类型的实例和引用。通常,动态 SQL 不支持 PL/SQL 特定类型。例如,绑定参数不能是布尔值或索引表。

oracle plsql
1个回答
0
投票

只需进行分组并使用带有条件逻辑的聚合来分离列:

     SELECT module,key,MAX(DECODE(lang,'EN',value)) en,MAX(DECODE(lang,'DE',value)) de
       FROM table
      GROUP BY module,key
© www.soinside.com 2019 - 2024. All rights reserved.