我有一个翻译表,如下所示:
模块 | 钥匙 | 郎 | 价值 |
---|---|---|---|
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 特定类型。例如,绑定参数不能是布尔值或索引表。
只需进行分组并使用带有条件逻辑的聚合来分离列:
SELECT module,key,MAX(DECODE(lang,'EN',value)) en,MAX(DECODE(lang,'DE',value)) de
FROM table
GROUP BY module,key