PLS-00103: 出现符号 ")"在需要下列之一时

pls,出现,符号,需要,下列,之一 · 浏览次数 : 87

小编点评

cauza错误的原因是参数列表中包含多个逗号,导致 Oracle 存储过程识别语法错误。 **解决方案:** 1. **解析参数类型:** 确定每个参数的类型(数字、字符串、日期等)。 2. **检查参数数量:**确保参数数量与参数类型匹配。 3. **处理逗号:**在参数类型为字符串时,需要将逗号替换为引号。 4. **添加引号:**将所有字符串参数和单引号参数都包含在引号中。 **示例代码:** ```sql PROCEDURE my_proc ( param1 NUMBER, param2 VARCHAR2(50), param3 DATE ) IS BEGIN -- 你的存储过程逻辑 END; ``` **注意:** * 确保所有数字参数的精度和格式正确。 * 确保所有字符串参数都经过适当的编码。 * 使用 `DBMS_OUTPUT.PUT_LINE()` 等方法对存储过程输出内容进行调试。

正文

执行 Oracle 存储过程时,出现 “PLS-00103: 出现符号 ")"在需要下列之一时:”,

Cause: java.sql.SQLException: ORA-06550: 第 22 行, 第 4 列:
PLS-00103: 出现符号 ")"在需要下列之一时:
 ( - + case mod new not null
   <an identifier> <a double-quoted delimited-identifier>
   <a bind variable> continue avg count current exists max min
   prior sql stddev sum variance execute forall merge time
   timestamp interval date
   <a string literal with character set specification>
   <a number> <a single-quoted SQL string> pipe
   <一个带有字符集说明的可带引号的字符串文字>
   <一个可带引号的 SQL 字符串> purge
符号 "null" 被替换为 ")" 后继续。

; bad SQL grammar []; nested exception is java.sql.SQLException: ORA-06550: 第 22 行, 第 4 列: 
PLS-00103: 出现符号 ")"在需要下列之一时:
 ( - + case mod new not null
   <an identifier> <a double-quoted delimited-identifier>
   <a bind variable> continue avg count current exists max min
   prior sql stddev sum variance execute forall merge time
   timestamp interval date
   <a string literal with character set specification>
   <a number> <a single-quoted SQL string> pipe
   <一个带有字符集说明的可带引号的字符串文字>
   <一个可带引号的 SQL 字符串> purge
符号 "null" 被替换为 ")" 后继续。

image

解决方案

很坑,参数最后多了个,逗号。 call setStatus('a','b',)
还有就是每个参数的数据类型要确保正确对应
按上面的规则,检查自己的入参,大概率是不起眼的一个小坑,把自己坑了

与PLS-00103: 出现符号 ")"在需要下列之一时相似的内容: