为啥会显示“SP2-0552:未声明绑定变量“SEL”。”在 sql 加?

Posted

技术标签:

【中文标题】为啥会显示“SP2-0552:未声明绑定变量“SEL”。”在 sql 加?【英文标题】:Why is this showing "SP2-0552: Bind variable "SEL" not declared." in sql plus?为什么会显示“SP2-0552:未声明绑定变量“SEL”。”在 sql 加? 【发布时间】:2020-10-01 09:47:44 【问题描述】:
SQL> DECLARE
  2      SEL NUMBER(3);
  3      ans VARCHAR(20);
  4  BEGIN:
  5      SEL := &SEL ;
  6      CASE SEL
  7  WHEN 1 THEN ans := 'SUNDAY';
  8  WHEN 2 THEN ans := 'MONDAY';
  9  WHEN 3 THEN ans := 'TUESDAY';
 10  WHEN 4 THEN ans := 'WEDNESDAY';
 11  WHEN 5 THEN ans := 'THURSDAY';
 12  WHEN 6 THEN ans := 'FRIDAY';
 13  WHEN 7 THEN ans := 'SATURDAY';
 14
 15      END CASE;
 16      DBMS_OUTPUT.PUT_LINE(' CORRESPONDING DAY FOR THE NUMBER '||SEL||' IS '||DAY);
 17  END;
 18  /


Enter value for sel: 3
old   5:     SEL := &SEL ;
new   5:     SEL := 3 ;
SP2-0552: Bind variable "SEL" not declared.

【问题讨论】:

【参考方案1】:

你的块有两个问题:

    BEGIN 后面有一个冒号,它不应该在那里

    在您的输出中有一个未声明的DAY 变量,它应该是变量ans

以下是工作版本:

DECLARE
    SEL NUMBER(3);
    ans VARCHAR(20);
BEGIN
    SEL := &SEL ;
    CASE SEL
    WHEN 1 THEN ans := 'SUNDAY';
    WHEN 2 THEN ans := 'MONDAY';
    WHEN 3 THEN ans := 'TUESDAY';
    WHEN 4 THEN ans := 'WEDNESDAY';
    WHEN 5 THEN ans := 'THURSDAY';
    WHEN 6 THEN ans := 'FRIDAY';
    WHEN 7 THEN ans := 'SATURDAY';

   END CASE;
   DBMS_OUTPUT.PUT_LINE(' CORRESPONDING DAY FOR THE NUMBER '||SEL||' IS '||ans);
END;
/

【讨论】:

以上是关于为啥会显示“SP2-0552:未声明绑定变量“SEL”。”在 sql 加?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 SP2-0552:未声明绑定变量?

SP2-0552:未声明绑定变量“N3”

SP2-0552:未声明绑定变量“NEW”并且 END 错误报告 - 未知命令

这个程序有啥错误?

用于在表上自动生成 ID 的序列和触发 PL/SQL 脚本

在服务器中部署的javaweb项目隔段时间为啥会弹出Java(TM) Platform SE binary已停止工作