У меня есть требование, в котором мне нужно прочитать таблицу (имя таблицы указано в качестве входного параметра SP), сохранить результаты во временной таблице, а затем сохранить счетчик считанной таблицы в переменной. Посоветуйте, пожалуйста, как этого добиться. Мне удалось прочитать таблицу и ее количество с помощью динамического запроса, но я не могу поместить результаты во временную таблицу / переменную. Похоже, что предложения Select и Into не работают с Execute Immediate. Спасибо.
"Выполнить немедленно" с предложением Into в HANA
Ответы (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