Я пишу хранимую процедуру, которая должна возвращать документ id . Этот идентификатор документа может быть любым из двух полей. APP_DOC_ID (добавлено из приложения) BTCH_DOC_D (добавлено из пакета) оба являются разными полями в одной таблице.Как использовать RECORD или CURSOR в том месте, где проводимость
Мне нужно получить эти docid на основе подзапроса.
SELECT DISTINCT APP_DOC_ID FROM
(SELECT APP_DOC_ID FROM XXXXXX BC WHERE BC.XX||BC.XY||BC.XZ IN
(SUBQUERY))
UNION ALL
SELECT DISTINCT BTCH_DOC_ID FROM
(SELECT BTCH_DOC_ID FROM XXXXXX BC WHERE BC.XX||BC.XY||BC.XZ IN
(SUBQUERY))
Мой подзапрос немного сложнее, так что я не хочу, чтобы запустить этот запрос 2 раз-APP_DOC_ID и BTCH_DOC_ID, Можно ли сохранить подзапросы результатов в RECORD или CURSOR и использовать его как запрос-х
Например
BEGIN
OPEN P_CURSOR FOR (Select AB.XX||AB.XY||AB.XZ from ....)
SELECT DISTINCT APP_DOC_ID FROM
(SELECT APP_DOC_ID FROM XXXXXX BC WHERE BC.XX||BC.XY||BC.XZ IN P_CURSOR)
UNION ALL
SELECT DISTINCT BTCH_DOC_ID FROM
(SELECT BTCH_DOC_ID FROM XXXXXX BC WHERE BC.XX||BC.XY||BC.XZ IN P_CURSOR)
это такой подход Я не выполняю свой сложный подзапрос 2 раза.
Спасибо за вашу помощь и время
Вы отметили это для MySQL и SQL Server, которые являются двумя совершенно разными механизмами баз данных. Затем вы отметили его PL/SQL, который является языком, который существует только в базе данных Oracle, которая является третьим совершенно другим механизмом базы данных. Какую базу данных вы действительно используете? Мое предположение из вашего синтаксиса заключается в том, что вы используете Oracle, а теги MySQL и SQL Server должны быть удалены, но это просто предположение. –