Динамический курсор ПОВСЕДНЕВНО

Я пытаюсь создать SP с динамическим курсором для получения результата любого оператора Select.

CREATE PROCEDURE CursorTest (:query IN VARCHAR(5000)) ;
BEGIN
DECLARE :out VARCHAR;
DECLARE :dynamicCursor CURSOR FOR  EXEC (:query);
OPEN dynamicCursor;
/* cursor loop */ 
    Cursorloop:
    LOOP
    FETCH NEXT FROM `enter code here`Cursorloop INTO :out;
    End LOOP; 
    CLOSE dynamicCursor;
    END;

У меня есть две проблемы: объявить курсор динамическим запросом и вывести результат в виде строки.

Thanks in advance

person UserEsp    schedule 22.09.2015    source источник


Ответы (1)


Поскольку этот вопрос помечен pervasive, я предполагаю, что вы хотите добиться этого в PervasiveSQL.

Я не думаю, что то, что вы пытаетесь сделать, возможно там. Основная причина этого заключается в том, что, насколько мне известно, P-SQL не имеет агрегатных функций для объединения произвольных столбцов или строк в строку (например, string_agg в PostgreSQL).

Во-вторых, P-SQL не поддерживает запросы по номеру столбца. Аргумент :query может быть любым оператором (даже недопустимым!), поэтому вы не знаете, сколько столбцов он создаст.

Более важное замечание: чего именно вы хотите достичь? Эта хранимая процедура выглядит как слишком сложный способ простого выполнения :query без возможности обработки результата. Если вашей целью является ведение журналов или анализ, не лучше ли использовать внешний, более гибкий (скриптовый) язык для работы с результирующим набором? Общеизвестно, что SQL является языком программирования, но у него есть свои ограничения.

person Aldo    schedule 13.11.2015