【问题标题】:SP2-0552: Bind variable "VAR1" not declaredSP2-0552:未声明绑定变量“VAR1”
【发布时间】:2016-12-01 00:52:25
【问题描述】:
set pagesize 0 echo off;
SET LINESIZE 30000 LONG 300000000 LONGCHUNKSIZE 30000 Trimspool on;

WHENEVER SQLERROR EXIT SQL.SQLCODE

var1 timestamp
exec :var1 := select LOAD_TIME from xml_audit where subject_area=&2 and load_time=(select max(load_time) from xml_audit where status='PASSED');

我在下面的查询中使用了变量但得到错误

SP2-0552: Bind variable "VAR1" not declared.

请帮帮我

【问题讨论】:

  • 下面有什么查询?
  • 如果您打算定义一个SQL*Plus 绑定变量,则语法为var[iable] <<name of variable>> <<data type>>。我猜您希望 var1 成为变量的名称,因此您缺少 var[iable] 声明。 timestamp 也不是 SQL*Plus 绑定变量的有效数据类型。
  • 谢谢你猜对了:)

标签: sql oracle10g


【解决方案1】:

在 PL/SQL 中,您必须选择一个变量。

SELECT col INTO variable FROM table;

你还需要声明一个匿名块:

DECLARE
d_date DATE;
BEGIN
    SELECT sysdate INTO d_date FROM dual;
    SELECT col FROM table WHERE some_date = d_date
END;

【讨论】:

    【解决方案2】:

    遵循此语法 - 这适用于 SQL PLus,应该适用于 Toad 等...:

    VARIABLE x VARCHAR2(300);
    EXEC :x:= 'MILLER';
    SELECT ename FROM scott.emp WHERE ename = :x
    /
    
    SQL> VARIABLE x VARCHAR2(300);
    SQL> EXEC :x:= 'MILLER';
    
    PL/SQL procedure successfully completed.
    
    SQL> SELECT ename FROM scott.emp WHERE ename = :x;
    
    ENAME
    ----------
    MILLER
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2021-12-11
      相关资源
      最近更新 更多