как использовать found_rows в пакете oracle, чтобы избежать двух запросов - PullRequest
1 голос
/ 16 июня 2010

Я создал пакет, который могу использовать следующим образом:

select * from table(my_package.my_function(99, 'something, something2', 1, 50))

Я использую пакет в хранимой процедуре.Пример хранимой процедуры выглядит так:

insert into something values(...) 
from 
(select * from table(my_package.my_function(99, 'something, something2', 1, 50))) a
other_table b
where b.something1 = a.something1;

open cv_1 for 
select count(*) from 
table(my_package.my_function(99, 'something, something2', 1, 50))

Итак, я вызываю один и тот же пакет дважды.в первый раз для сопоставления записей с другими таблицами и другими вещами и во второй раз для получения счетчика.

Есть ли способ получить счет в первый раз и поместить его в переменную, а во второй раз, я просто выбираю этопеременная, а не повторный вызов всего запроса?

Надеюсь, это имеет смысл.

1 Ответ

4 голосов
/ 16 июня 2010

Вы можете получить количество вставленных строк следующим образом (я исправил ваш синтаксис INSERT):

insert into something (...) 
select * from table(my_package.my_function(99, 'something, something2', 1, 50))) a
other_table b
where b.something1 = a.something1;

l_count := SQL%ROWCOUNT;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...