Sqlplus pl / sql日期/时间用户输入理解为绑定变量

时间:2014-04-16 00:58:58

标签: sql oracle plsql sqlplus

我面临一个奇怪的问题。

我有一个小的pl / sql匿名块,提示用户输入日期。我想稍后在查询中重复使用此日期,但是我收到类似“SP2-0552:绑定变量”01“未声明的错误。”。

问题是时间中的“:01”被解释为绑定变量。解决方法是在引用'2014/04/16 01:01:01'之间输入日期而不是直接在2014/04/16 01:01:01之间输入日期。 但是,我希望能够在没有引用的情况下输入我的日期。

这是一个简单的脚本:

declare
    adate VARCHAR2(20);
begin
    adate := &adate;
    query := 'select to_date(''' || adate ||''', ''YYYY/MM/DD HH24:MI:SS'') from dual';
    dbms_output.put_line(query);
end;

Enter value for adate: 2014/04/15 01:01:01
old   4:    adate := &adate;
new   4:    adate := 2014/04/15 01:01:01;
SP2-0552: Bind variable "01" not declared.

1 个答案:

答案 0 :(得分:2)

我找到了答案。

变量必须在脚本中的引号之间。

declare
    adate VARCHAR2(20);
begin
    adate := '&adate';
    query := 'select to_date(''' || adate ||''', ''YYYY/MM/DD HH24:MI:SS'') from dual';
    dbms_output.put_line(query);
end;