Oracle SQL创建存储过程gradeCheck后无法传参调用求助
Oracle存储过程问题修正方案
错误点梳理
- 存储过程语法缺失:参数声明段末尾缺少必须的
AS/IS关键字,直接导致编译失败 - 语句结束符缺失:CASE分支内的
DBMS_OUTPUT.PUT_LINE执行语句末尾未加;,不符合PL/SQL语法规范 - 传参格式错误:字符常量传参需要用单引号包裹,直接写
A会被Oracle识别为未声明的变量,触发运行时报错 - 输出开关未开启:默认配置下
DBMS_OUTPUT的内容不会打印到控制台,需提前开启输出配置
修正后可运行代码
存储过程创建代码
create or replace procedure gradeCheck(grade char(1)) AS Begin Case When grade = 'A' then DBMS_OUTPUT.PUT_LINE('Great Work'); else DBMS_OUTPUT.PUT_LINE('Not great work'); end case; end gradeCheck; /
调用代码
-- 开启控制台输出开关 SET SERVEROUTPUT ON; Begin gradeCheck('A'); end; /
运行效果
传入参数为'A'时输出Great Work,传入其他单字符时输出Not great work,完全符合需求。
内容的提问来源于stack exchange,提问作者Richard Strott
相关产品推荐
相关产品推荐

