За последние 24 часа нас посетил 17851 программист и 1704 робота. Сейчас ищут 1715 программистов ...

Проблема с выполнением хранимой процедуры

Тема в разделе "Oracle Database", создана пользователем ValicV, 5 дек 2008.

  1. ValicV

    ValicV Активный пользователь

    С нами с:
    5 дек 2008
    Сообщения:
    2
    Симпатии:
    0
    Добрый день!

    У меня к присутствующим есть маленький вопрос.

    При написании программки столкнулся с такой проблемой, хранимая процедура при запуске через SQLPlus выполняется нормально, а при выполнении её из PHP кода не выполняется, вернее выполняется только её часть.
    Работаю с Oracle 9.2 использую OCI-функции.

    Вот текст хранимой процедуры:

    PROCEDURE AddFormulasToAnalizPok ( p_id varchar2, f_name varchar2, f_text varchar2, f_active number default 1, f_list clob )
    IS
    f_id_field analiz_pok_fields.idfield % TYPE;
    f_charcode varchar2(256);
    SQL_Text varchar2(4000);
    BEGIN
    /********************** add fields to pok *************************************/
    select max(idfield) into f_id_field from analiz_pok_fields where idpok = p_id;
    select charcode into f_charcode from analiz_pok_reestr where idpok = p_id;

    IF f_id_field is Null
    THEN f_id_field := 1;
    ELSE f_id_field := f_id_field + 1;
    END IF;

    insert into analiz_pok_fields (idpok, idfield, charcode, fname, ftype, isformula, active) values (p_id, f_id_field, f_charcode, f_name, 'FLOAT', 1, f_active);

    /********************** add formulas to table *********************************/
    insert into analiz_pok_formulas (idpok, idfield, formula) values (p_id, f_id_field, f_text);

    /********************** add fields with formulas to table *********************/
    SQL_Text := ' insert into analiz_pok_formulas (select '''||p_id||''', '||
    f_id_field||', f.frmrowc, 1 from bestzvit.formrow f where f.charcode in (select charcode from analiz_pok_reestr where idpok = '''||p_id||
    ''') and (f.frmrowc like ''A%'' or f.frmrowc like ''B%'') and f.frmrowtype = 1 and '''||f_list||''' like ''%!''||f.frmrowc||''!%'')';

    Execute immediate SQL_Text;

    commit;
    END;

    Так вот не выполняется последняя команда
    " Execute immediate SQL_Text;",
    тоисть ошибок нет но и в таблицу ничего не пишет, а последующий " commit;" отрабатывает без проблем.

    Помогите пожалуйста кто что знает!!!
     
  2. ValicV

    ValicV Активный пользователь

    С нами с:
    5 дек 2008
    Сообщения:
    2
    Симпатии:
    0
    Вопрос снят

    Переписал по другому процедуру, боюсь что проблема с обработкой SQL-запроса парсером.
    Удачи всем