Как установить переменную DEFINE, равную выбору из другой определенной таблицы в PL / SQL - PullRequest
0 голосов
/ 21 февраля 2019

Как я могу использовать функцию DEFINE, чтобы установить переменную, равную результату другого оператора SELECT?(результат - выбор только из одного столбца / одной строки)

Пример:

DEFINE source_table = mysourcetable
DEFINE use_date = select distinct max(txn_date) from &source_table

select asdf1, asdf2
from &source_table s
where &use_date between s.eff_date and s.end_date

В настоящее время я получаю сообщение об ошибке «отсутствует выражение» в переменной & usedate в переменнойWHERE предложение.

Надеюсь, что имеет смысл.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Просто для полноты, это еще один способ, используя команду COLUMN .. NEW_VALUE:

DEFINE source_table = mysourcetable

column  the_col new_value  use_date 

select distinct max(txn_date) the_col from &source_table;

PROMPT The value is &use_date 

select asdf1, asdf2
from &source_table s
where TO_DATE('&use_date') between s.eff_date and s.end_date;
0 голосов
/ 21 февраля 2019

Просто разобрался.& Use_date в предложении WHERE необходимо заключить в скобки ...

DEFINE source_table = mysourcetable
DEFINE use_date = select distinct max(txn_date) from &source_table

select asdf1, asdf2
from &source_table s
where (&use_date) between s.eff_date and s.end_date

ИЛИ поставить запрос DEFINE в скобках:

DEFINE source_table = mysourcetable
DEFINE use_date = (select distinct max(txn_date) from &source_table)

select asdf1, asdf2
from &source_table s
where &use_date between s.eff_date and s.end_date
...