You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PL/SQL存储过程IN OUT参数调用报PLS-00363错误如何解决

错误原因

你的存储过程定义的p_num是IN OUT类型参数,这类参数要求传入的是可被修改的变量,你调用时直接传入字符串字面量'8006330575'属于常量,无法作为赋值目标,因此触发PLS-00363报错。

解决方法

调用时先声明变量存储原始手机号,再将变量传入存储过程即可,正确调用代码如下:

DECLARE
  v_phone VARCHAR2(20) := '8006330575';
BEGIN
  format_phone(v_phone);
  -- 后续可直接使用格式化后的v_phone变量
END;
/

额外说明

你提到的给VARCHAR2参数指定长度编译失败是正常语法规则:PL/SQL存储过程/函数的参数定义中,VARCHAR2、NUMBER等类型不允许指定长度/精度,长度约束只需要在传入的变量上定义即可,不需要修改原有存储过程的参数声明。

如果作业没有强制要求用IN OUT参数,也可以改成函数形式,调用更简便:

create or replace FUNCTION format_phone (p_num IN VARCHAR2) 
RETURN VARCHAR2 IS
BEGIN 
  RETURN '(' || SUBSTR(p_num, 1, 3) || ')' || SUBSTR(p_num, 4, 3) || '-' || SUBSTR(p_num, 7);
END format_phone;
/
-- 调用示例
SELECT format_phone('8006330575') FROM dual;

内容的提问来源于stack exchange,提问作者Strax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:06:04