powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / OCI и PL/SQL блоки
2 сообщений из 2, страница 1 из 1
OCI и PL/SQL блоки
    #32089487
Igor Sablin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не подскажите ли, уважаемые, каким образом через OCI (Release 8.1.6) проверить проверить правильность написанного pl/sql кода? Я предполагал, что это можно сделать с помощью oparse, однако, что бы я через него не прогонял (даже случайный набор символов), ему все по фигу - никакой ошибки не возвращает.

Cda_Def cda;
Lda_Def lda;
ub1 hda[256];
text* test = (text*)"Declare\n t number10; \nBegin \n t:=9;\nEnd";

static unsigned char *szPLSQLBlock =
(unsigned char *) "select2 2+2 from dual;";
static unsigned char *pszConnStr =
(unsigned char *) "xxxx/xxxxxxx@XXXXX";

memset ((void *)hda, (int) 0, (size_t) 255);
if (olog(&lda, (unsigned char*)&hda, (unsigned char*)pszConnStr,-1,0,-1,0,-1,OCI_LM_DEF))
{
MessageBox("Logon Failed", "Error");
}

if (oopen(&cda, &lda, 0, -1, -1, 0, -1)) {
MessageBox("Opening CDA Failed", "Error");
}

if (oparse(&cda, szPLSQLBlock, strlen((CString)szPLSQLBlock), 1, /* parse */
1))
{
error_handler(&cda, lda);
}

Заранее спасибо!
...
Рейтинг: 0 / 0
OCI и PL/SQL блоки
    #32089518
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного не в тему: складывается впечатление, что процедуры ручного парсинга - весьма загадочные зверьки, раз даже родной пакет dbms_sql, справляясь со следующим разбором:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
dan@oraspb>; declare v_cursor integer;
   2   begin
   3     v_cursor := dbms_sql.open_cursor;
   4     dbms_sql.parse(v_cursor, 'begin XXX; end;', dbms_sql.v7);
   5   end;
   6   /
declare v_cursor integer;
*
ERROR at line  1 :
ORA- 06550 : line  1 , column  7 :
PLS- 00201 : identifier 'XXX' must be declared
ORA- 06550 : line  1 , column  7 :
PL/SQL: Statement ignored
ORA- 06512 : at  "SYS.DBMS_SYS_SQL" , line  826 
ORA- 06512 : at  "SYS.DBMS_SQL" , line  32 
ORA- 06512 : at line  4  

благополучно пропускает, если добавить параметр:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
dan@oraspb>; declare v_cursor integer;
   2   begin
   3     v_cursor := dbms_sql.open_cursor;
   4     dbms_sql.parse(v_cursor, 'begin :x:=1; XXX; end;', dbms_sql.v7);
   5   end;
   6   /

PL/SQL procedure successfully completed.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / OCI и PL/SQL блоки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]