Oracle SQL Query для запуска значения столбца как SQL-запрос - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть следующая строка в таблице

 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> 

Я хочу 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. (Возможно, разделенные запятыми объединенные значения, где запрос будет возвращать несколько строк.)

1 Ответ

2 голосов
/ 22 сентября 2011

Создайте функцию, которая принимает ваш столбец 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...