目录
实例:独立存储过程(Standalone Procedure)
一、概述
简单来说,存储过程就是多条SQL语句的集合。可视为批文件,但其作用不仅限于批处理。在数据转换/ 查询报表时会经常使用存储过程,它的作用是SQL语句不可替代的。
二、创建
公式:
CREATE [OR REPLACE] PROCEDURE [Schema.] procedure_name
[parameter_name [IN] datatype [{:=DEFAULT} expression ]]
{IS | AS}
BODY;
一个超简单的存储过程:
CREATE PROCEDURE HELLO
AS
BEGIN
dbms_output.put_line('Hello this is a Simple Procedure');
END;
BEGIN
HELLO;
END;
/
三、调用方式
- 像下面一个例子中,调用在BEGIN...AND...之间
- execute procedure_name;【Command命令行】
- exec procedure_name; 【简写版】
实例:嵌套存储过程(Nested Procedure)
SET SERVEROUTPUT ON;
DECLARE
ming varchar2(20) := 'Leonardo'; --赋初值
xing varchar2(20) := 'Scb';
-- 定义嵌套存储过程
PROCEDURE print(
first_name varchar2, -- 注意,此处参数不能指定长度滴
last_name varchar2
)
IS
-- 在此处申明变量
full_name varchar2(40);
BEGIN
full_name := last_name || '_' || first_name;
dbms_output.putline('My name is ' || full_name);
END print;
BEGIN
-- 调用存储过程方式一
print(ming, xing);
-- 调用.......方式二
print(first_name => ming, last_name => xing);
END;
/
输出结果为:
My name is Scb_Leonardo
My name is Scb_Leonardo
PL/SQL procedure successfully completed