powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / dbms_sql.parse
1 сообщений из 1, страница 1 из 1
dbms_sql.parse
    #32045581
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой вот код явно указывает, что разбираемое выражение недопустимо:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  
 1   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     dbms_sql.close_cursor(v_cursor);
   6   exception when others then
   7     if dbms_sql.is_open(v_cursor) then dbms_sql.close_cursor(v_cursor); end if;
   8     raise;
   9 * end;
sql> /
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 line  8 

Но при добавлении параметра выражение разбирается без проблем:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
   1   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     dbms_sql.close_cursor(v_cursor);
   6   exception when others then
   7     if dbms_sql.is_open(v_cursor) then dbms_sql.close_cursor(v_cursor); end if;
   8     raise;
   9 * end;
sql> /

PL/SQL procedure successfully completed.

Можно ли при наличии параметра убедиться в допустимости выражения без его выполнения посредством dbms_sql.execute?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / dbms_sql.parse
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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