Консультация № 52029
13.08.2006, 20:51
0.00 руб.
0 2 2
Всем здравия и знаний!
Встала такая проблема (код в приложении):
при вызове данной функции из sqlplus все замечательно работает, но вот при вызове из программы блок:
BEGIN
-- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-- IF r_count = 0 THEN
INSERT INTO radius_acc_rejects
(Service_Id,
Username,
Reject_Cause_Id)
VALUES
(0,
pusername,
1);
COMMIT;
-- END IF;
END;
не хочет писать в таблицу.
Есть мысли, я уже запарился читать литературу.
Всем спасибо!

Приложение:
CREATE OR REPLACE FUNCTION check_username (pusername IN VARCHAR2) RETURN Radius_Attribute_Set PIPELINEDAS PRAGMA AUTONOMOUS_TRANSACTION; out_rec radius_attribute := radius_attribute(NULL,NULL,NULL,NULL,NULL); CURSOR cur_rad_check IS SELECT id,UserName,Attribute,VALUE,op FROM radcheck WHERE username = pusername; r cur_rad_check%ROWTYPE; r_count INTEGER; BEGIN OPEN cur_rad_check; LOOP FETCH cur_rad_check INTO r; EXIT WHEN cur_rad_check%NOTFOUND; out_rec.id := r.Id; out_rec.attribute := r.Attribute; out_rec.username := r.Username; out_rec.VALUE := r.VALUE; out_rec.op := r.Op; PIPE ROW(out_rec); END LOOP; r_count := cur_rad_check%ROWCOUNT; CLOSE cur_rad_check; BEGIN -- этот блок не срабатывает при вызове из программы -- SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; -- IF r_count = 0 THEN INSERT INTO radius_acc_rejects (Service_Id, Username, Reject_Cause_Id) VALUES (0, pusername, 1); COMMIT; -- END IF; END; RETURN;END check_username;

Обсуждение

Неизвестный
15.08.2006, 13:40
общий
это ответ
Доброе время суток, din

а что с безопасностью ? какого уровня происходит вызов этой процедуры ? какие присутствуют зависимые переменные и не нужно ли перекомпилировать часть процедур ? что изменялось с последнего редактирования ?

с уважением, удачи
Неизвестный
16.08.2006, 18:16
общий
это ответ
Здравствуйте, din!
Попробуйте сделать отладку, пройти и посмотреть в каком-нибудь отладчике результаты выполения (допустим PL/SQL Developer). Он действительно не заходит в этот блок или insert не commit‘ит ?
Форма ответа