表格中有以下行
TEMP_ID HTML_LABEL HTML_NAME OPTIONS_TYPE OPTION_VALUES HTML_CODE
----------------------------------------------------------------------------------------------
2 RULE_NO : RULE_NO_7_32 D SELECT DRV_COLUMN FROM FRD_DATA <reconTags:renderSelect></reconTags:renderSelect>
我想要一个oracle sql查询,它提供像这样的输出
TEMP_ID HTML_LABEL HTML_NAME OPTIONS_TYPE OPTION_VALUES HTML_CODE
----------------------------------------------------------------------------
2 RULE_NO : RULE_NO_7_32 D 1,2,3,4 <reconTags:renderSelect></reconTags:renderSelect>
我希望将option_values字段中存储的查询结果显示为option_values字段的值。 (可能是以逗号分隔的连接值,查询将返回多行。)
答案 0 :(得分:2)
创建一个以sql列为参数的函数,并循环遍历每个记录构建一串值然后返回结果,用法为SELECT col1, your_function(col2) from your table
以下是关于动态SQL的一些指示:http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/dynamic.htm
我猜它会是这样的:
CREATE OR REPLACE FUNCTION sql_to_csv (p_select IN VARCHAR2)
RETURN VARCHAR
AS
v_out VARCHAR2 (4000);
TYPE RefCurTyp IS REF CURSOR;
v_cursor RefCurTyp;
a_record DUAL%ROWTYPE;
BEGIN
OPEN v_cursor FOR p_select;
-- Fetch rows from result set one at a time:
LOOP
FETCH v_cursor INTO a_record;
EXIT WHEN v_cursor%NOTFOUND;
v_out:=v_out || ',' || a_record.dummy;
END LOOP;
-- Close cursor:
CLOSE v_cursor;
RETURN (v_out);
END;