Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
SQL, PL/SQL, T-SQL: запросы, DML DDL операторы, пакеты, процедуры, функции, триггеры и последовательности.
  • Страница:
  • 1
  • 2

ТЕМА:

Oracle: не получается создать курсор 12 года 9 мес. назад #2813

  • Jack
  • Jack аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Спасибо получено: 0
Всем привет!
Я хочу создать курсор типа
cursor tfacr200 (date_f date, cuno char) is
select a.t$ttyp as ttyp,
(select sum(t$amth+t$cdam)
from baan.ttfacr200308 b
where b.t$ttyp = a.t$ttyp
and b.t$trec <> a.t$trec
and t$docd < date_f) as sum_opl_f,
from baan.ttfacr200308 a
where trim(t$cuno) = trim(cuno)
and t$docd < date_t;
при компиляции ХП возникает ошибка о недопустимости использования второго select - а, но в SQL Plus такой запрос отрабатывается без проблем

В чем может быть ошибка? можно ли как-то переделать курсор

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: не получается создать курсор 12 года 9 мес. назад #2814

Ты привел именно то запрос, который откомпилировать пытаешься? В нем запятая лишняя после "as sum_opl_f". Если в плюсе отрабатывает без проблем, а в процедуре нет- как правило проблема связана с отсутствием явных прав (не через роли) на объекты, учавствующие в запросе.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: не получается создать курсор 12 года 9 мес. назад #2815

Можно поподробнее про явные права? На что это влияет? То бишь дача права роли, а потом предоставление роли не равны прямой дачи права?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: не получается создать курсор 12 года 9 мес. назад #2816

Нет - для вьюх, процедур и т.п.
При компиляции Oracle проверяет прова на объекты используемые в PL\SQL блоке. Они должны быть указаны явно, так как имеется возможность использовать команду SET ROLE, что может привести к ошибкам. Еще имеется возможность выполнения блока с правами вызывающего, тогда можно использовать роли.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: не получается создать курсор 12 года 9 мес. назад #2817

  • Jack
  • Jack аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Спасибо получено: 0
Строчку объявления курсора я немного сократил, и запята это очепятка

И вряд ли это проблемма с правами, т.к grant на эту таблицу я дал

А жаба при компиляции говорит следующее:
PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:
и длинный список где ожидался select

что же делать?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: не получается создать курсор 12 года 9 мес. назад #2818

Ага, и Java внезапно появилась:)Скажи, так где именно ты хочешь объявить курсор: в pl/sql-процедуре или java-классе? покажи, как именно делаешь. И желательно бы иметь структуру таблицы baan.ttfacr200308, точнее только той ее части, которая касается запроса.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
Время создания страницы: 0.254 секунд