Informix: процедура с выходными параметрами?
Я много искал, но ничего не смог найти... Я просто хочу спросить, есть ли способ создать и вызвать процедуру (Informix) без параметров. Я знаю, как вернуть одно или несколько значений (для процедур и для функций), но это не то, что я хочу. Было бы очень странно, если бы Informix не позволял выводить параметры..
Заранее спасибо!
РЕДАКТИРОВАТЬ: Да, я видел, что это возможно, но я все еще не могу выполнить такую процедуру. Например:
CREATE PROCEDURE mytest(batch INT,OUT p_out INT)
DEFINE inc INTEGER;
LET inc = 1;
LET p_out = 5;
END PROCEDURE;
и что я получаю это:
Рутина mytest не может быть решена
и это происходит только при выполнении функций с выходными параметрами..
2 ответа
Зачем вам нужны "вне" параметры? Процедуры Informix могут возвращать несколько значений из одного вызова (или, в этом случае, одного значения):
CREATE PROCEDURE mytest(batch INT) RETURNING INT AS p_out;
DEFINE inc INTEGER;
DEFINE p_out INTEGER;
LET inc = 1;
LET p_out = batch + inc;
RETURN p_out;
END PROCEDURE;
Существует только ограниченное количество мест, где вы можете использовать параметр OUT. Один из них в запросе - в некоторых сообщениях об ошибках появляется имя SLV (локальная переменная оператора). Я считаю, что есть способ получить параметры OUT через Java (JDBC). AFAIK, другие API не позволяют это.
Код, написанный для Informix, предполагает, что ему не нужны выходные параметры. Код, перенесенный в Informix из других (обедненных?) Систем, которые не предоставляют нескольких выходных значений из одной процедуры, необходимо переосмыслить для разумной работы с Informix.
Да, позвольте..
Проверьте эту ссылку: http://publib.boulder.ibm.com/infocenter/idshelp/v115/topic/com.ibm.netpr.doc/ininout.htm?resultof=%22procedure%22%20%22procedur%22%20%22out%22%20%22parameter%22%20%22paramet%22%20