2010-08-18 3 views
0

Я очень новичок в хранимых процедурах. Я пытаюсь сделать хранимую процедуру, которая будет выполнять обновление, принимающее 2 входных параметра и возвращающее количество обновленных записей (в моем случае всегда 1).Сохраненная процедура возвращает обновленный счетчик записей?

Мне до сих пор удалось это сделать, но я не понимаю, как вернуть переменную после открытия курсора. Нужен ли курсор в моем случае? Пожалуйста, поправьте меня, если мой подход ошибочен.

CREATE PROCEDURE PAKRETST.FTUMODINST (IN GENFORTREATYSRNO INTEGER,IN GENFTMDPDUENO INTEGER, OUT NUMREC SMALLINT) 
RESULT SETS 0 MODIFIES SQL DATA LANGUAGE SQL 
P1:BEGIN 
    DELCARE strCmd VARCHAR(500); 
    DECLARE x CURSOR WITH RETURN TO CALLER FOR SL; 
    SET strCmd='UPDATE PAKRETST.UWFTMDPDUEDATES a where a.GENFORTREATYSRNO='||GENFORTREATYSRNO||'AND a.GENFTMDPDUENO='||GENFTMDPDUENO; 
    PREPARE SL FROM strCmd; 
    SET NUMREC= -- Stuck here -- 
    RETURN; 
    END 
    ; 

ответ

3

Вам не нужен курсор. Просто используйте GET DIAGNOSTICS NUMREC = ROW_COUNT на линии, на которой вы застряли.

Дополнительная информация here.

+0

Спасибо за ответ, это было очень полезно. Вы знаете, как вернуть параметр out в конце процедуры? Также является ли обязательным после обновления? –

+0

После того, как процедура вернется, значение параметра OUT будет доступно в переменной, которую вы предоставили для этого параметра при вызове процедуры. Вы COMMIT после UPDATE, которое происходит в транзакции. В противном случае COMMIT не требуется. – 2010-08-18 07:32:58

+0

Спасибо, Джефф, ваш ответ был так полезен =) –

Смежные вопросы