oracle Sql Developer错误绑定变量未声明

时间:2017-11-19 16:31:07

标签: sql oracle

{{1}}

不确定我收到此错误的原因

  

未声明绑定变量

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

这是你的代码:

Insert into booking
    values ('EWKF2VN', 'Canada', TO_DATE(11/20/12,'DD/MON/YY'),
            TO_DATE(1/10/18 4:00PM, 'DD/MON/YY HH:MIAM'),
            TO_DATE(1/10/18 6:30PM, 'DD/MON/YY HH:MIAM'),
            'B', 125.00, Booked, 'AC101', 8521169618
           );

Booked未声明。

我会把它写成:

Insert into booking ( . . . ) -- explicitly list columns here
    values ('EWKF2VN', 'Canada', DATE '2012-11-20',
            TIMESTAMP '2018-01-10 16:00:00',
            TIMESTAMP '2018-01-10 18:30:00',
            'B', 125.00, 'Booked', 'AC101', 8521169618
           );

这会明确列出列。它使用内置关键字来提供日期和时间戳常量。

答案 1 :(得分:2)

你得到的错误是因为你这样做了:

TO_DATE(1/10/18 4:00PM, 'DD/MON/YY HH:MIAM'),
TO_DATE(1/10/18 6:30PM, 'DD/MON/YY HH:MIAM'),

使用您尝试转换缺少的单引号窗口的值;所以:00PM:30PM被解释为绑定变量。因此错误消息,因为它们确实没有声明。

所以你可以这样做:

TO_DATE(‘1/10/18 4:00PM’, 'DD/MON/YY HH:MIAM'),
TO_DATE(‘1/10/18 6:30PM’, 'DD/MON/YY HH:MIAM'),

但是如果可能的话,我更愿意使用日期/时间戳文字,正如戈登所说。正如Gordon所提到的那样,您还缺少围绕仅日期值和Booked的单引号,并明确列出列名称确实是一个好主意。