Procedure的实际含义是什么?为何无返回值存储过程编译报错?
PL/SQL存储过程编译错误分析与概念说明
先看你提供的报错代码:
SQL> create or replace procedure print() 2 is 3 begin 4 dbms_output.put_line("This is a print procedure"); 5 end; 6 / Warning: Procedure created with compilation errors.
编译错误的两个原因
- 无参数存储过程的语法错误:PL/SQL里定义无参数的存储过程时,不能加括号,正确的定义开头是
procedure print is,而非print()。 - 字符串常量的引号错误:PL/SQL中字符串必须用单引号包裹,你这里用了双引号,这会被解析为标识符(比如列名、变量名)而非字符串常量。
修正后的代码
create or replace procedure print is begin dbms_output.put_line('This is a print procedure'); end; /
关于Procedure的实际含义
PL/SQL中的Procedure(存储过程)是预编译的可复用SQL代码块,属于子程序的一种,和函数有明确区分:
- 存储过程不需要返回值(但可以通过OUT/IN OUT参数实现数据输出),而函数必须定义返回值,且能在SQL语句中直接调用。
- 存储过程的核心作用是封装批量操作、业务逻辑或数据处理流程,可独立调用,也能被其他存储过程、触发器调用。
- 支持IN(输入)、OUT(输出)、IN OUT(输入输出)三种参数,用于实现程序间的数据传递。
内容的提问来源于stack exchange,提问作者codeforFun
相关产品推荐
相关产品推荐

