我使用以下代码定义了几个替换变量
Select '&&my_name' "my name", '&&my_birthday' "date born" from dual;
我想在 select 语句的后续调用中使用 date_born 变量,但不断收到 ORA-00904 错误。以下是我正在尝试的代码:
Select '&&my_name' "my name", '&&my_birthday' "date born", TO_DATE("date born") from dual;
或
Select '&&my_name' "my name", '&&my_birthday' "date born", TO_DATE(my_birthday) from dual;
有什么想法吗?我一定错误地定义或调用变量或列。
DUAL 没有"date born"
列。
试试这个:
with demo (my_name, date_born) as
( select '&&my_name', '&&my_birthday' from dual )
select my_name, to_date(date_born)
from demo;
或者这个
select my_name, to_date(date_born)
from ( select '&&my_name' as my_name, '&&my_birthday' as date_born from dual );
我使用了标准命名,而不是重复引用所有内容。
to_date(date_born)
日期格式和语言恰好与您的会话默认值相匹配,这有点像赌博。我更愿意指定日期格式,例如确保'&&my_birthday'
格式为YYYY-MM-DD
然后
select '&&my_name' as my_name, date '&&my_birthday' as date_born from dual;
编辑:或者,正如 lad2025 指出的那样,由于您正在使用&&
因此您可以在同一语句中多次使用相同的变量。