当前位置: 首页 > 知识库问答 >
问题:

在PL/SQL代码中使用替换变量

丁茂
2023-03-14

我正在使用SQL Developer并编写此PL/SQL代码。但当我给B作为选项时,我得到了一个错误。请帮忙。

SET SERVEROUTPUT ON

accept q_grade char prompt 'EnterGrade: '
DECLARE
v_grade CHAR(1) := UPPER(&q_grade);
v_appraisal VARCHAR(20);

BEGIN
v_appraisal := CASE v_grade WHEN v_grade = 'A' THEN 'Excellent'
WHEN v_grade = 'B' THEN 'Good'
WHEN v_grade = 'C' THEN 'FAIL'
ELSE 'NO SUCH GRADES'
END;

DBMS_OUTPUT.PUT_LINE ('Grade:  ' || v_grade  || ' Appraisal  ' ||v_appraisal);

END;
/

错误报告:

ORA-06550: line 2, column 26:
PLS-00201: identifier 'B' must be declared
ORA-06550: line 2, column 9:
PL/SQL: Item ignored
ORA-06550: line 6, column 21:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 6, column 1:
PL/SQL: Statement ignored
ORA-06550: line 12, column 57:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 12, column 21:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

共有2个答案

勾炳
2023-03-14

您需要在案例语句之后删除额外的v_等级:

BEGIN
v_appraisal := CASE WHEN v_grade = 'A' THEN 'Excellent'
/* -- here --------^ */
谢弘阔
2023-03-14

改变:

v_grade CHAR(1) := UPPER('&q_grade');

v_appraisal := CASE WHEN v_grade = 'A' THEN 'Excellent'
 类似资料:
  • 问题内容: 我需要一个脚本来创建表,或者如果它已经存在,则将其删除,并在重新创建表时将其删除。经过一些研究,我发现在pl / sql中不存在。所以我想出了这个脚本: 有没有适当的方法来实现此功能? 问题答案: 使用全局临时表似乎是一个更好的选择。但是,如果您坚持在运行时删除和重新添加表,则可以查询_TABLES视图之一(即USER_TABLES,DBA_TABLES,ALL_TABLES)以确定该

  • 我有java类,我想把它们转换成pl sql包。是否有任何工具(开源或商业)可用于进行转换。

  • 主要内容:PL/SQL变量声明,PL/SQL变量初始化,PL/SQL变量作用域,将SQL查询结果分配给PL/SQL变量,以下是纠正/补充内容:在本章中,我们将学习中的变量。 一个变量只不过是在程序中可以操纵的存储区域的名称。 中的每个变量都有一个指定的数据类型,它决定了变量内存的大小和布局; 可以存储在存储器中的值的范围以及可应用于该变量的一组操作。 PL/SQL变量的名称由可选的字母,数字,美元()符号,下划线和数字符号组成,不能超过30个字符。 默认情况下,变量名不区分大小写。不能将保留的P

  • 从本质上讲,我试图遍历变量的内容,实现replace函数,并打印相应的更改。当我执行代码时,变量被打印出来,只是没有得到预期的结果。 预期结果如下: Lorem ipsum dolor坐在那里,有些字符串是有价值的,这是非常重要的。这是一个非常小的问题,当然也可以锻炼身体。在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责中,在谴责

  • 这就是我现在的代码,我试着放入“\n”、“ ”和“ ”,但都不起作用,现在我放入“\n”只是为了明确我想在哪里换行: 我的返回值放在mappingDocsVariable中,然后用以下代码生成docx文件:

  • 问题内容: 我有需要变量替换以更好地使用Go-kit服务的sql查询。 我有&作为用户输入的内容,这是我的休息服务的一部分,例如:和。 我已经尝试了一些事情,例如: 和: 导致错误: 仅硬编码的值有效,替换失败。 我没有从Oracle博客那里找到很多有关此方面的帮助,并且想知道是否有任何方法可以解决此问题。 问题答案: 参数占位符语法(参考:http : //go-database- sql.or