Мне нужно динамически заполнить курсор Oracle (Oracle 10g). Оператор SQL изменяется, основываясь на входном значении, чтобы извлечь из разных таблиц и столбцов. То, что я не хочу делать, - это поддерживать временную таблицу, которую я усекаю и загружаю каждый раз, когда выполняется sproc. Вот то, что я сейчас делаю, но если есть другая альтернатива, я был бы признателен за помощь:Динамическое заполнение курсора Oracle в хранимой процедуре
хранимой процедуры
PROCEDURE Get_Type_One_Polygon_Values(in_role VARCHAR2, rc_generic OUT SYS_REFCURSOR) as
BEGIN
execute immediate 'truncate table teamchk.temp_type_one_roles';
execute immediate 'INSERT INTO TEAMCHK.TEMP_TYPE_ONE_ROLES ' ||
'SELECT ' || in_role || '_POLY_ID, ' || in_role || '_POLY_NAME ' ||
'FROM TEAMCHK.' || in_role;
open rc_generic for
select * from teamchk.temp_type_one_roles;
END;
Temp Таблица
CREATE TABLE TEAMCHK.TEMP_TYPE_ONE_ROLES
(
ROLE_ID NUMERIC(38,0),
ROLE_NAME VARCHAR2(75)
);
Это был только тот ответ, который мне нужен. Я не уверен, почему я этого не заметил! –
, кстати, глобальная временная таблица вообще никогда не нуждается в усечении. –