Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / WITH+PLSQL=ORA-00905 / 8 сообщений из 8, страница 1 из 1
28.10.2019, 18:53
    #39882439
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WITH+PLSQL=ORA-00905
Код: 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
28.10.2019, 19:06
    #39882443
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WITH+PLSQL=ORA-00905
--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
28.10.2019, 19:13
    #39882445
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WITH+PLSQL=ORA-00905
andrey_anonymous,

я думал, есть какое-то человеческое решение вроде хинта +with_plsql
...
Рейтинг: 0 / 0
29.10.2019, 08:50
    #39882545
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WITH+PLSQL=ORA-00905
--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
29.10.2019, 11:11
    #39882619
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WITH+PLSQL=ORA-00905
-2-,

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

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

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


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