Я пытаюсь передать оператор SELECT
напрямую в качестве параметра хранимой процедуры, но не могу.Если я добавлю локальную переменную и Select
INTO
, она будет работать нормально.
Вот пример:
DECLARE
something MyTable%ROWTYPE;
PROCEDURE Test(param IN MyTable%ROWTYPE) as
BEGIN
...
END;
BEGIN
SELECT
SYS_GUID() as ID,
'X' as COLUMN1,
'Y' as COLUMN2,
'Z' as COLUMN3
INTO something
FROM DUAL
WHERE rownum < 2;
Test(something);
END;
Это работает нормально, как и ожидалось, но если я попытаюсьвставьте переменную something
, произойдет сбой:
DECLARE
PROCEDURE Test(param IN MyTable%ROWTYPE) as
BEGIN
...
END;
BEGIN
Test((SELECT
SYS_GUID() as ID,
'X' as COLUMN1,
'Y' as COLUMN2,
'Z' as COLUMN3
FROM DUAL
WHERE rownum < 2));
END;
ORA-06550: строка 11, столбец 11: PLS-00103: Обнаружен символ «ВЫБОР» при ожидании одного из следующих действий:
(- + case мод новый, не нулевой, продолжить среднее число текущих существует макс. Мин. Ранее sql отклонение суммы stddev выполнить за все время слияния интервал времени отметка даты конвейер
- & - +; / at для остатка мода rem иили группа с пересекающимся объединением начала минус порядка, где connect || multiset
Почему он не принимает мой встроенный оператор выбора, а работает при сохранении результата в переменную? Что мне нужно сделать?позволить встроенному оператору работать так, как я собираюсь?