【发布时间】:2016-01-25 16:40:24
【问题描述】:
我在尝试将 TIMESTAMP 值转换为作为参数(变量)给出的时区时遇到一个奇怪的错误。
下面的代码抛出 ORA-00907 异常:
ORA-00907: 缺少右括号
declare
tz timestamp := current_timestamp;
v_timezone varchar2(100) := '03:00';
tz2 timestamp;
begin
-- select (tz at time zone '03:00') into tz2 from dual;
select (tz at time zone v_timezone)
into tz2
from dual;
dbms_output.put_line(to_char(tz2,'hh24:mi:ss'));
-- dbms_output.put_line(to_char((tz at time zone v_timezone),'hh24:mi:ss'));
end;
同时,带有字符串文字的 SQL(第一个注释行)和带有变量的 PL/SQL(第二个注释行)都可以正常工作。
SQL 中的变量可能有什么问题?为什么ORA-00907?
【问题讨论】: