尝试使用&&时出现无效的标识符错误ORA-00904替换变量

时间:2018-03-18 09:08:20

标签: sql oracle

我使用以下代码来定义一对替换变量

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;

有什么想法吗?我必须错误地定义或调用变量或列。

1 个答案:

答案 0 :(得分:2)

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指出的那样,因为您使用&&,所以您可以在同一语句中多次使用相同的变量。