如何将DEFINE变量设置为等于PL / SQL中另一个已定义表的选择
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将DEFINE变量设置为等于PL / SQL中另一个已定义表的选择相关的知识,希望对你有一定的参考价值。
如何使用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
我当前得到的错误是WHERE子句中&usedate变量的'missing expression'。
希望有道理。
答案
刚想通了。 WHERE子句中的&use_date需要放在括号中...
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
另一答案
为了完整起见,这是使用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;
以上是关于如何将DEFINE变量设置为等于PL / SQL中另一个已定义表的选择的主要内容,如果未能解决你的问题,请参考以下文章
如何像在 T-SQL 中一样在 PL/SQL 中声明和使用变量?
PL/SQL:, 如何将变量传递给 SELECT 语句并返回所有结果行