Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 if ... than и select  [new]
_тупень
Guest
>set serveroutput on;
>ed
Записано file afiedt.buf

  1  declare
  2  ss number;
  3  begin
  4  select 1 into ss from dual;
  5  if ss=1
  6  then
  7  dbms_output.put_line('true');
  8  end if;
  9* end;
 10  /
true

Процедура PL/SQL успешно завершена.

>ed
Записано file afiedt.buf

  1  begin
  2  if (select 1 from dual)=1
  3  then
  4  dbms_output.put_line('true');
  5  end if;
  6* end;
  7  /
if (select 1 from dual)=1
    *
ошибка в строке 2:
ORA-06550: Строка 2, столбец 5:
PLS-00103: Встретился символ "SELECT" в то время как ожидалось одно из следующих:
( - + case mod new not null others <идентификатор>
<идентификатор с двойными кавычками-разделителями>
<переменная привязки> avg count current exists max min prior
sql stddev sum variance execute forall merge time timestamp
interval date
<строковый литерал со спецификацией кодовой таблицы> <число>
<строка SQL в одинарных кавычках> pipe
<строковый литерал, заключенный в другие кавычки, со спецификацией
ORA-06550: Строка 2, столбец 24:
PLS-00103: Встретился символ "=" в то время как ожидалось одно из следующих:
; return returning and or
>
почему первый вариант является валидным а второй нет?

все что нашел в доке:
автор
The IF statement executes or skips a sequence of statements, depending on the value of a Boolean expression
...
PL/SQL lets you compare variables and constants in both SQL and procedural statements. These comparisons, called BOOLEAN expressions, consist of simple or complex expressions separated by relational operators. Often, BOOLEAN expressions are connected by the logical operators AND, OR, and NOT. A BOOLEAN expression always yields TRUE, FALSE, or NULL.

Явного запрета я здесь не увидел.

А может я что-то не понимаю и здесь есть принципиальное ограничение?
21 сен 11, 08:34    [11309411]     Ответить | Цитировать Сообщить модератору
 Re: if ... than и select  [new]
Elic
Member

Откуда:
Сообщений: 29979
RTFM PL/SQL Expressions and Comparisons (FAQ): "An operand is a variable, constant, literal, or function call"
21 сен 11, 09:00    [11309462]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить