Oracle存储过程Procedure简单介绍(第一部分)
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,我们都知道SQL语言是没有判断和过程控制语句的,而PL/SQL又很好的补充了SQL语言这方面的不足。而存储过程也是一种PL/SQL块,但是存储过程又跟传统的PL/SQL块不一样,存储过程是以命名的方式
千家信息网最后更新 2025年01月20日Oracle存储过程Procedure简单介绍(第一部分)我们都知道SQL语言是没有判断和过程控制语句的,而PL/SQL又很好的补充了SQL语言这方面的不足。而存储过程也是一种PL/SQL块,但是存储过程又跟传统的PL/SQL块不一样,存储过程是以命名的方式存储于数据库中的。它有很多优点,比如:
1、存储过程是以命名的数据库对象形式存储于数据库当中。存储在数据库中的优点是很明显的,因为代码不保存在本地,用户可以在任何客户机上登录到数据库,并调用或修改代码。
2、存储过程可由数据库提供安全保证,要想使用存储过程,需要有存储过程的所有者的授权,只有被授权的用户或创建者本身才能调用执行存储过程。
3、存储过程的信息是写入数据字典的,所以存储过程可以看作是一个公用模块,用户编写的PL/SQL程序或其他存储过程都可以调用它(但存储过程和函数不能调用PL/SQL程序)。一个重复使用的功能,可以设计成为存储过程。
4、像其他高级语言的过程和函数一样,可以传递参数给存储过程,参数的传递也有多种方式。存储过程可以有返回值,也可以没有返回值,存储过程的返回值必须通过参数带回;函数有一定的数据类型,像其他的标准函数一样,我们可以通过对函数名的调用返回函数值。
5、存储过程需要进行编译,以排除语法错误,只有编译通过才能调用。
Oracle存储过程基本语法
CREATE OR REPLACE PROCEDURE 存储过程名(参数)
IS/AS
变量
BEGIN
可执行部分
EXCEPTION
错误处理部分
END;
按照惯例举个hello world的例子
create or replace procedure hello as
say_hi varchar2(20);
begin
say_hi := 'Hello World';
dbms_output.put_line(say_hi);
end;
/
语法说明:
1、create or replace procedure是创建存储过程的一个基本语法
2、在存储过程(PROCEDURE)和函数(FUNCTION)中使用IS和AS并没有太大区别,在视图(VIEW)中只能用AS不能用IS,在游标(CURSOR)中只能用IS不能用AS。后面一般跟变量声明。
3、begin和end之间是PL/SQL程序体,其中exception来指定失败处理流程。
调用一个存储过程
begin
-- Call the procedure
hello;
end;
存储的查看和删除:
查询存储过程hello的创建脚本
select * from user_source where name='HELLO';
查看存储过程hello的状态
select * from user_objects where object_name = 'HELLO';
重点看status列的状态,valid表示该存储过程是通过编译的,invalid
我们可以看到一个存储过程是有参数可以声明的,那么关于参数肯定就有输入和输出参数的区别了
三种形式的参数
1、IN 定义一个输入参数变量,用于传递参数给存储过程
2、OUT 定义一个输出参数变量,用于从存储过程获取数据
3、IN OUT 定义一个输入、输出参数变量,兼有以上两者的功能
参数的定义形式和作用如下:
IN参数
语法:参数名 IN 数据类型 DEFAULT 值;
定义一个输入参数变量,用于传递参数给存储过程。在调用存储过程时,主程序的实际参数可以是常量、有值变量或表达式等。DEFAULT 关键字为可选项,用来设定参数的默认值。如果在调用存储过程时不指明参数,则参数变量取默认值。在存储过程中,输入变量接收主程序传递的值,但不能对其进行赋值。
OUT参数
语法:参数名 OUT 数据类型;
定义一个输出参数变量,用于从存储过程获取数据,即变量从存储过程中返回值给主程序。
在调用存储过程时,主程序的实际参数只能是一个变量,而不能是常量或表达式。在存储过程中,参数变量只能被赋值而不能将其用于赋值,在存储过程中必须给输出变量至少赋值一次。
IN OUT参数
语法:参数名 IN OUT 数据类型 DEFAULT 值;
定义一个输入、输出参数变量,兼有以上两者的功能。在调用存储过程时,主程序的实际参数只能是一个变量,而不能是常量或表达式。DEFAULT 关键字为可选项,用来设定参数的默认值。在存储过程中,变量接收主程序传递的值,同时可以参加赋值运算,也可以对其进行赋值。在存储过程中必须给变量至少赋值一次。
1、参数in的举例
create or replace procedure say_hello (to_who in varchar2 default 'zhangsan') as
begin
dbms_output.put_line('Say Hi to '|| to_who);
end;
执行
begin
-- Call the procedure
say_hello( 'peter');
end;
2、参数out的举例
输出模式的参数,用于输出值,会忽略传入的值。在子程序内部可以对其进行修改。
输出:子程序执行完毕后,out模式参数最终的值会赋值给调用时对应的<实参变量>。
注意:out模式参数的调用,必须通过变量。
create or replace procedure pout(p1 out int) as
begin
p1 := 33;
end;
执行
declare
var1 int := 30;
begin
dbms_output.put_line(var1);
pout(var1);
dbms_output.put_line(var1);
end;
第一次输出30,第二次输出33。
3、参数in out的举例
输入输出模式:能接收传入的实参值;在子程序内部可以修改; 可以输出(必须用实参变量调用)
create or replace procedure pinout(p1 in out int) as
begin
dbms_output.put_line(p1);
p1 := 44;
end;
执行
declare
var1 int := 40;
begin
dbms_output.put_line(var1);
pinout(var1);
dbms_output.put_line(var1);
end;
到这里我们介绍了存储过程的一些基本概念,在下一篇博客里,我们要介绍存储过程的一些高级功能。
1、存储过程是以命名的数据库对象形式存储于数据库当中。存储在数据库中的优点是很明显的,因为代码不保存在本地,用户可以在任何客户机上登录到数据库,并调用或修改代码。
2、存储过程可由数据库提供安全保证,要想使用存储过程,需要有存储过程的所有者的授权,只有被授权的用户或创建者本身才能调用执行存储过程。
3、存储过程的信息是写入数据字典的,所以存储过程可以看作是一个公用模块,用户编写的PL/SQL程序或其他存储过程都可以调用它(但存储过程和函数不能调用PL/SQL程序)。一个重复使用的功能,可以设计成为存储过程。
4、像其他高级语言的过程和函数一样,可以传递参数给存储过程,参数的传递也有多种方式。存储过程可以有返回值,也可以没有返回值,存储过程的返回值必须通过参数带回;函数有一定的数据类型,像其他的标准函数一样,我们可以通过对函数名的调用返回函数值。
5、存储过程需要进行编译,以排除语法错误,只有编译通过才能调用。
Oracle存储过程基本语法
CREATE OR REPLACE PROCEDURE 存储过程名(参数)
IS/AS
变量
BEGIN
可执行部分
EXCEPTION
错误处理部分
END;
按照惯例举个hello world的例子
create or replace procedure hello as
say_hi varchar2(20);
begin
say_hi := 'Hello World';
dbms_output.put_line(say_hi);
end;
/
语法说明:
1、create or replace procedure是创建存储过程的一个基本语法
2、在存储过程(PROCEDURE)和函数(FUNCTION)中使用IS和AS并没有太大区别,在视图(VIEW)中只能用AS不能用IS,在游标(CURSOR)中只能用IS不能用AS。后面一般跟变量声明。
3、begin和end之间是PL/SQL程序体,其中exception来指定失败处理流程。
调用一个存储过程
begin
-- Call the procedure
hello;
end;
存储的查看和删除:
查询存储过程hello的创建脚本
select * from user_source where name='HELLO';
查看存储过程hello的状态
select * from user_objects where object_name = 'HELLO';
重点看status列的状态,valid表示该存储过程是通过编译的,invalid
我们可以看到一个存储过程是有参数可以声明的,那么关于参数肯定就有输入和输出参数的区别了
三种形式的参数
1、IN 定义一个输入参数变量,用于传递参数给存储过程
2、OUT 定义一个输出参数变量,用于从存储过程获取数据
3、IN OUT 定义一个输入、输出参数变量,兼有以上两者的功能
参数的定义形式和作用如下:
IN参数
语法:参数名 IN 数据类型 DEFAULT 值;
定义一个输入参数变量,用于传递参数给存储过程。在调用存储过程时,主程序的实际参数可以是常量、有值变量或表达式等。DEFAULT 关键字为可选项,用来设定参数的默认值。如果在调用存储过程时不指明参数,则参数变量取默认值。在存储过程中,输入变量接收主程序传递的值,但不能对其进行赋值。
OUT参数
语法:参数名 OUT 数据类型;
定义一个输出参数变量,用于从存储过程获取数据,即变量从存储过程中返回值给主程序。
在调用存储过程时,主程序的实际参数只能是一个变量,而不能是常量或表达式。在存储过程中,参数变量只能被赋值而不能将其用于赋值,在存储过程中必须给输出变量至少赋值一次。
IN OUT参数
语法:参数名 IN OUT 数据类型 DEFAULT 值;
定义一个输入、输出参数变量,兼有以上两者的功能。在调用存储过程时,主程序的实际参数只能是一个变量,而不能是常量或表达式。DEFAULT 关键字为可选项,用来设定参数的默认值。在存储过程中,变量接收主程序传递的值,同时可以参加赋值运算,也可以对其进行赋值。在存储过程中必须给变量至少赋值一次。
1、参数in的举例
create or replace procedure say_hello (to_who in varchar2 default 'zhangsan') as
begin
dbms_output.put_line('Say Hi to '|| to_who);
end;
执行
begin
-- Call the procedure
say_hello( 'peter');
end;
2、参数out的举例
输出模式的参数,用于输出值,会忽略传入的值。在子程序内部可以对其进行修改。
输出:子程序执行完毕后,out模式参数最终的值会赋值给调用时对应的<实参变量>。
注意:out模式参数的调用,必须通过变量。
create or replace procedure pout(p1 out int) as
begin
p1 := 33;
end;
执行
declare
var1 int := 30;
begin
dbms_output.put_line(var1);
pout(var1);
dbms_output.put_line(var1);
end;
第一次输出30,第二次输出33。
3、参数in out的举例
输入输出模式:能接收传入的实参值;在子程序内部可以修改; 可以输出(必须用实参变量调用)
create or replace procedure pinout(p1 in out int) as
begin
dbms_output.put_line(p1);
p1 := 44;
end;
执行
declare
var1 int := 40;
begin
dbms_output.put_line(var1);
pinout(var1);
dbms_output.put_line(var1);
end;
到这里我们介绍了存储过程的一些基本概念,在下一篇博客里,我们要介绍存储过程的一些高级功能。
存储
过程
参数
变量
数据
输出
语法
输入
主程序
函数
数据库
功能
模式
类型
子程序
实际
常量
用户
程序
表达式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
100台服务器同时安装系统
树立动态的网络安全观有哪些内容
数据库图表用什么软件
2018年数据库技术大会
戴尔服务器如何查看cpu温度
usb无线打印服务器
宜黄软件开发
论文国际数据库索引
表格提取两个条件的数据库
浙江c语言软件开发价位
谷歌账号登录提示与谷歌服务器
iso编程软件开发
如何取消服务器的端口
服务器远程管理卡ip不固定
云服务器二级诊断
网络安全行业专业就业
服务器上可以装什么软件
带数据库的电商代码
数据库after附近有语法错误
成都企业云软件开发
对数据库中的数据使用索引吗
滕州未成年人网络安全
数据库类似算抄袭吗
中软深圳软件开发
全中文软件开发工具免费下载
软件开发PBC绩效管理
c for循环添加数据库
实时对战服务器
南昌手机软件开发
工业园区服务器价格咨询