powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / WITH+PLSQL=ORA-00905
8 сообщений из 8, страница 1 из 1
WITH+PLSQL=ORA-00905
    #39882439
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
SQL> declare
  2  cursor c is
  3  with
  4  function f1(a number) return number is begin return a; end;
  5  select f1(1) x from dual;
  6  begin
  7  open c;
  8  close c;
  9  end;
10  /
function f1(a number) return number is begin return a; end;
         *
ERROR at line 4:
ORA-06550: line 4, column 10:
PL/SQL: ORA-00905: missing keyword
ORA-06550: line 3, column 1:
PL/SQL: SQL Statement ignored
ORA-06550: line 4, column 56:
PLS-00103: Encountered the symbol "END" when expecting one of the following:
begin function pragma procedure subtype type <an identifier>
<a double-quoted delimited-identifier> current cursor delete
exists prior

SQL> with
  2  function f1(a number) return number is begin return a; end;
  3  select f1(1) x from dual;
  4  /

         X
----------
         1

Это можно как-то обойти, не создавая подпрограмму уровня схемы/пакета?
...
Рейтинг: 0 / 0
WITH+PLSQL=ORA-00905
    #39882443
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--не создавая подпрограмму уровня схемы/пакета?
Первое и второе, что пришло в голову:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
declare
  cursor c is
    select 1 x
      from dual;
  function f1(a number) return number is begin return a; end;
begin
  for i in c loop
    dbms_output.put_line(f1(i.x));
  end loop;
end;
/


declare
  c sys_refcursor;
begin
  open c for 'with
      function f1(a number) return number is begin return a; end;
      select f1(1) x from dual'
      ;
  close c;
end;
/
...
Рейтинг: 0 / 0
WITH+PLSQL=ORA-00905
    #39882445
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

я думал, есть какое-то человеческое решение вроде хинта +with_plsql
...
Рейтинг: 0 / 0
WITH+PLSQL=ORA-00905
    #39882545
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--вроде хинта +with_plsqlМожно и хинтом
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SQL> alter session set sql_translation_profile = test1;

Session altered.

SQL> set serveroutput on
SQL> declare
  2    /*+with_plsql:begin*/
  3    cursor c is
  4      with function f1(a number) return number is begin return a; end;
  5      select f1(1) x from dual;
  6    /*+with_plsql:end*/
  7    x number;
  8  begin
  9    open c; fetch c into x; dbms_output.put_line('x='||x); close c;
 10  end;
 11  /
x=1

PL/SQL procedure successfully completed.
...
Рейтинг: 0 / 0
WITH+PLSQL=ORA-00905
    #39882619
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

погодите минуту, это что за уличная магия?
это в какой версии такое вообще возможно?
у меня грязно ругается ORA-00905
...
Рейтинг: 0 / 0
WITH+PLSQL=ORA-00905
    #39882621
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--,

-2-sql_translation_profile
...
Рейтинг: 0 / 0
WITH+PLSQL=ORA-00905
    #39882724
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

ну, дорогие, мои..
я-то говорил о *человеческом* решении
неужели этим (sql_translation_profile) и правда кто-то пользуется в качестве промышленного решения?
...
Рейтинг: 0 / 0
WITH+PLSQL=ORA-00905
    #39882726
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--неужели этим (sql_translation_profile) и правда кто-то пользуется в качестве промышленного решения?Ты не уловил утончённого стёба.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / WITH+PLSQL=ORA-00905
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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