У меня есть хранимая процедура в пакете в Oracle, который принимает несколько NUMBER
Типы в качестве аргументов и работает без проблем, когда целые числа передаются явно.
Однако при использовании связанных параметров (в SQL Developer) я получаю сообщение об ошибке Error report - Missing defines
, Когда он запускается в PHP, он не работает тихо. Учитывая преимущества безопасности при использовании связанных параметров, я бы предпочел не объединять запрос в PHP и делать это таким образом (да, я мог бы использовать intval()
и он справится с этим), поскольку эта проблема выходит за рамки только пакетов с целочисленными параметрами.
Это работает как при успешном запуске, так и при проверенных изменениях базы данных.
BEGIN package_name.procedure_name(
1,
2
); END;
Однако это не так.
BEGIN package_name.procedure_name(
:VARIABLE_1,
:VARIABLE_2
); END;
И не делает этого:
BEGIN package_name.procedure_name(
VARIABLE_1 => :VARIABLE_1,
VARIABLE_2 => :VARIABLE_2
); END;
Запуск отладки в SQL Developer предоставляет логику для объявления типов, а затем их передачи в качестве переменных, но добавление привязки там также не удается.
Любые идеи относительно того, почему возникает ошибка, учитывая, что процедура работает без проблем со статическими аргументами?
Вы можете использовать таким образом:
SQL> variable VARIABLE_1 number;
SQL> variable VARIABLE_2 number;
SQL> BEGIN
package_name.procedure_name(
:VARIABLE_1,
:VARIABLE_2
);
END;/
Других решений пока нет …