Предположим, у меня есть функция, в которой мне нужно выполнить несколько действий, все из которых зависят от результатов одного запроса. Все, что я смог найти, указывает, что мне нужно определить временную таблицу вне процедуры, которую я НЕ ХОЧУ ДЕЛАТЬ.Временное хранение Oracle в рамках функции
Я хотел бы сделать что-то вроде следующего:
create or replace function f_example(
a_input in number
)
return varchar2 is
begin
create local temporary table tempIDs
(
testID number(6, 0)
, testValue number(8,0)
);
//select data from tableFoo that will be overwritten by a_input into tempIDs
//update data in tableFoo with a_input & store old data in another tableFoo field
end f_example;
Этот синтаксис не работает. Oracle не разрешает «создавать» внутри функции.
Я не программист базы данных. Я привык работать на C# и Java. В этом случае я сохраню свои значения в локальном массиве (или что-то еще), выходящем за пределы области действия при завершении метода. Есть ли законный способ сделать что-то подобное в Oracle SQL?
PL/SQL имеет коллекции и массивы, как Java. –
В соответствии с комментариями в примере кода вам вообще не требуется временное хранилище, просто выполните 'update tableFoo set a_field = a_input, another_field = a_field где ...' – ThinkJet
Проблема, с которой я столкнулся (что в моем примере не достаточно ясно сообщается) заключается в том, что мне нужно иметь возможность ссылаться на старые значения ПОСЛЕ того, как я сделал обновление. – Travis