Выполнение Хранимой Процедуры
Этот этап применяется ко всем хранимым процедурам.
Для выполнения хранимой процедуры Вы создаёте Stproc -объект, используя метод storedProc объектов database или Connection. Создание такого объекта автоматически вызывает хранимую процедуру. При создании объекта хранимой процедуры Вы специфицируете имя процедуры и любые параметры процедуры.
Например, у Вас есть хранимая процедура newhire, принимающая параметры - строку и целое число. Следующий вызов метода создаёт spObj -объект хранимой процедуры и вызывает хранимую процедуру newhire:
spObj = connobj.storedProc("newhire", "Fred Jones", 1996);
В общем, Вы обязаны предоставить значения для всех параметров ввода/вывода для хранимой процедуры. Если хранимая процедура имеет значение по умолчанию, определённое для одного из её параметров, Вы можете использовать директиву "/Default/" для специфицирования этого значения по умолчанию. Аналогично, если хранимая процедура может принимать null-значение одного из своих параметров, Вы можете специфицировать это null-значение либо директивой "/Null/", либо передав само null-значение.
Например, предположим, хранимая процедура demosp принимает два строковых параметра и один целочисленный. Вы можете предоставить эти параметры таким образом:
spobj = connobj.storedProc("demosp", "Param_1", "Param_2", 1);
Альтернативно, чтобы передать null для второго параметра и использовать значение по умолчанию для третьего параметра, Вы можете использовать один из следующих операторов:
spobj = connobj.storedProc("demosp", "Param_1", "/Null/", "/Default/"); spobj = connobj.storedProc("demosp", "Param_1", null, "/Default/");
ПРИМЕЧАНИЕ:
В Informix значения по умолчанию обязаны появляться только после всех специфицированных значений. Например, Вы не можете использовать /Default/ для второго параметра процедуры, а затем специфицировать значение для третьего параметра.
Вы можете также использовать директивы "/Default/" и "/Null/" для параметров ввода/вывода.
В Oracle хранимая процедура может принимать ref -курсоры как параметры input/output или как output-параметры. Например, у Вас имеется хранимая процедура Oracle под названием proc1, принимающая 4 параметра: ref -курсор, целочисленное значение, другой ref -курсор и другое целочисленное значение.
Вызов этой хранимой процедуры из SQL Plus может выглядеть так:
execute proc1 (refcursor1, 3, refcursor2, 5);
Однако, если Вы вызываете эту процедуру из приложения JavaScript, Вы не предоставляете ref -курсор-параметры. Вместо этого эквивалент может быть таким:
spobj = connobj.storedProc("proc1", 3, 5);
О параметрах вывода см. Параметры вывода не могут быть null; однако Вы можете присвоить null-значение параметрам ввода или ввода/вывода.
В таблице дано резюме по методам объекта хранимой процедуры.
resultSet | Возвращает следующий результирующий набор для хранимой процедуры. Для Informix Вы можете иметь нуль или более результирующих наборов. Для других БД Вы можете иметь нуль, один или более результирующих наборов. |
returnValue | Запрашивает return-значение хранимой процедуры. Для Informix, DB2 и ODBC этот метод всегда возвращает null. |
outParameters | Возвращает специфицированный параметр вывода. Поскольку хранимые процедуры Informix не используют параметры вывода, не используйте этот метод с Informix. |
outParamCount | Возвращает количество параметров вывода. Для Informix этот метод всегда возвращает 0, поскольку хранимые процедуры Informix не используют параметров вывода. |