Проблема с выполнением анонимных SQL-блоков (Oracle, OCI)

Headless

Guest
Проблема с выполнением анонимных SQL-блоков (Oracle, OCI)

Добрый день всем. Разрабратываю Web-интерфейс (PHP4.3.10+Apache1.3.27+Oracle10.1.4). PHP получает из базы либо текст SQL-запроса (типа SELECT...FROM...WHERE...), либо текст анонимного SQL-блока (DECLARE...BEGIN... END), получает список параметров, связывает параметры с переменными (ocibindbyname) и отправляет на выполнение. При этом запросы выполняетются влёт, а при попытке выполнить блок выпадает ошибка [sql]OCIStmtExecute: ORA-06550: line 1, column 9: PLS-00103: Encountered the symbol "" when expecting one of the following:...[/sql]. Скрипты для запросов и блоков формируются в приложении под windows, написанном на Delphi 5 +ODAC 4.5. Выполняются только блоки, записанные в одну строчку при создании, хотя в SQL-запросах этих переносов немеряно. Не подскажете, где грабли?
 

trustno1

Новичок
Re: Проблема с выполнением анонимных SQL-блоков (Oracle, OCI)

Автор оригинала: Headless
PHP получает из базы либо текст SQL-запроса (типа SELECT...FROM...WHERE...), либо текст анонимного SQL-блока (DECLARE...BEGIN... END)
У текст PLSQL-блок хранится в базе? Это как, в поле таблицы?
А процедуру/функцию почему не создашь?
да и привёл бы свои манипуляции здесь...
 

Headless

Guest
Разобрался сам. При получении SQL-выражения для анонимного блока, заменяю символы конца строки и перевода каретки на пробел
PHP:
	 $sql_stmt=str_replace("\r", chr(32),$sql_stmt); $sql_stmt=str_replace("\n", chr(32),$sql_stmt);
. Непонятно одно - почему SQL-запрос выполняется без всяких замен? :)
 

trustno1

Новичок
Автор оригинала: Headless
PHP:
	 $sql_stmt=str_replace("\r", chr(32),$sql_stmt); $sql_stmt=str_replace("\n", chr(32),$sql_stmt);
.
а зачем в 2 строчки?

Автор оригинала: Headless
Непонятно одно - почему SQL-запрос выполняется без всяких замен? :)
наверное, потому что там нет переводов строк
 
Сверху