Oracle 如何使用SELECT结果记录作为解码参数?
当此SELECT仅返回一条带有准备字符串的记录时,是否可以使用SELECT result作为解码参数? 例如: 选择replace(replace(序列化的_数据)…)作为表的结果 在一行中返回以下结果: 0,'label0',1,'label1',2,'label2' 但当我把它解码时,它被解释为一个参数。 是否有可能将此结果“字符串”转换为“纯”sql代码?;)Oracle 如何使用SELECT结果记录作为解码参数?,oracle,select,plsql,decode,oracle8i,Oracle,Select,Plsql,Decode,Oracle8i,当此SELECT仅返回一条带有准备字符串的记录时,是否可以使用SELECT result作为解码参数? 例如: 选择replace(replace(序列化的_数据)…)作为表的结果 在一行中返回以下结果: 0,'label0',1,'label1',2,'label2' 但当我把它解码时,它被解释为一个参数。 是否有可能将此结果“字符串”转换为“纯”sql代码?;) 感谢您的帮助。根据oracle的版本列出agg或wm concat 根据oracle的版本列出agg或wm concat 您可以使
感谢您的帮助。根据oracle的版本列出agg或wm concat
根据oracle的版本列出agg或wm concat
您可以使用动态SQL:
declare
DECTXT varchar2(4000);
begin
select replace(replace(serialized_data)..)..) as result into dectxt from table;
execute immediate 'select decode(col1,' || DECTXT || ') from tab1';
end;
这只是一个简单的示例,没有显示任何输出等。您可以使用动态SQL:
declare
DECTXT varchar2(4000);
begin
select replace(replace(serialized_data)..)..) as result into dectxt from table;
execute immediate 'select decode(col1,' || DECTXT || ') from tab1';
end;
这只是一个简单的示例,没有显示任何输出等。您可以通过使用
instr
和substr
来复制解码。下面的一个例子(可能会被整理得很干净,但效果很好):
不过,您确实需要在文本末尾加一个分号(VALSEP),以确保您可以找到最后一个值(尽管如果我进一步研究,可以解决这个问题)。您可以通过使用instr
和substr
复制解码。下面的一个例子(可能会被整理得很干净,但效果很好):
不过,您确实需要在文本末尾加一个分号(VALSEP),以确保可以找到最后一个值(尽管如果我进一步研究,可以解决这个问题)。您试图实现的解码语句是什么?我正在做一个报告,但具有乘法选择的字段只返回一个选择的ID。这些ID的翻译如下保存:“0=黑色;1=绿色;2=黄色“(在一列中)您试图实现的解码语句是什么?我正在做一个报告,但是具有乘法选择的字段只返回一个选择的ID。这些ID的翻译如下保存:“0=黑色;1=绿色;2=黄色“(在一列中)谢谢。不幸的是,我有8i,所以LISTAGG不可用。我不知道如何使用wm_concat。没有明确的文档可供分析使用,如何将此结果字符串转换为数组/表?谢谢。不幸的是,我有8i,所以LISTAGG不可用。我不知道如何使用wm_concat。没有明确的文档可供分析使用,如何将此结果字符串转换为数组/表?@Mack80-您可以调用存储过程,因为它可以放在存储过程中。@Mack80-您可以调用存储过程,因为它可以放在存储过程中。