"Выполнить немедленно" с предложением Into в HANA

У меня есть требование, в котором мне нужно прочитать таблицу (имя таблицы указано в качестве входного параметра SP), сохранить результаты во временной таблице, а затем сохранить счетчик считанной таблицы в переменной. Посоветуйте, пожалуйста, как этого добиться. Мне удалось прочитать таблицу и ее количество с помощью динамического запроса, но я не могу поместить результаты во временную таблицу / переменную. Похоже, что предложения Select и Into не работают с Execute Immediate. Спасибо.


person user3277704    schedule 05.03.2014    source источник


Ответы (1)


Мне не очень понятно, о чем именно спрашивают, но вы должны иметь возможность выполнить инструкцию SELECT следующим образом:

CREATE PROCEDURE p1(IN tablename VARCHAR) AS
BEGIN
   execute immediate 'SELECT * FROM ' || :tablename;
END;

Затем следующие операторы создают таблицу и вызывают процедуру для получения результата:

create table T (i integer);
insert into T values (123);

Следующее приведет к созданию набора результатов с одной строкой / столбцом со значением 123:

CALL p1('T')

Обратите внимание, что при использовании этого типа функциональности вы должны быть очень осторожны, чтобы не разрешить ввод данных, предоставленных пользователем, непосредственно в процедуру, которая использует EXECUTE IMMEDIATE, чтобы избежать возможности атак с использованием SQL-инъекций.

person Mark Wilkins    schedule 07.03.2014