【发布时间】:2022-01-05 22:56:50
【问题描述】:
我的 Databases 类中的一项任务是创建一个格式化电话过程,该过程使用一个 varchar2 in out 参数,该参数是一个未格式化的电话号码并打印一个格式化的版本。
例如:
输入:8006330575
输出:(800)633-0575
我编写的程序看起来不错并且可以编译,但是当我尝试调用它时,我收到一条错误消息:
ORA-06550: line 2, column 14: PLS-00363: expression '8006330575'
cannot be used as an assignment target
ORA-06550: line 2, column 1: PL/SQL: Statement ignored
1. BEGIN
2. format_phone('8006330575');
3. END;
我尝试过处理输入类型,但似乎没有任何效果。我还尝试在括号中指定 varchar2 参数中的字符数,但是当我这样做时,该过程甚至无法编译。
代码如下:
create or replace PROCEDURE format_phone
(p_num IN OUT VARCHAR2) IS
BEGIN
p_num := '(' || SUBSTR(p_num, 1, 3) || ')' || SUBSTR(p_num, 4, 3)
|| '-' || SUBSTR(p_num, 7);
DBMS_OUTPUT.PUT_LINE(p_num);
END format_phone;
【问题讨论】:
标签: sql oracle plsql oracle-apex