数据库过程、函数
过程
简介
- 是pl/sql的程序块。
- 可以没有参数,也可以有若干个输入、输出参数,甚至有多个既作为输出又作为输入的参数,但通常没有返回值.
- 存储在数据库中,可以通过 execute 执行或者在sql程序块中调用,由于是已经编写好且变异的代码,所以执行效率高。
- 优点
- 效率高
存储过程编译一次后,就会存到数据库,每次调用时都直接执行。而普通的sql语句我们要保存到其他地方(例如:记事本上),都要先分析编译才会执行。所以想对而言存储过程效率更高。
- 降低网络流量
存储过程编译好会放在数据库,我们在远程调用时,不会传输大量的字符串类型的sql语句。
- 复用性高
存储过程往往是针对一个特定的功能编写的,当再需要完成这个特定的功能时,可以再次调用该存储过程。
- 可维护性高
当功能要求发生小的变化时,修改之前的存储过程比较容易,花费精力少。
- 安全性高
完成某个特定功能的存储过程一般只有特定的用户可以使用,具有使用身份限制,更安全。
创建过程
|
- 解析
parameter1 传入的参数有三类: parameter_name in|out|in out 数据类型
in(默认) :外部定义并且赋值,向代码块中传递参数,在代码块中不能对该类参数进行修改
out: 外部定义该变量,由代码块中赋值变量并将其输出
in out : 向代码块中传递参数又可以在代码块外部访问该参数
default 可以为in类型数据传递参数
in的可以指定默认值: parameter1 default 默认值
代码块中 select into 赋值
--单个变量赋值 |
注意:
- 参数的类型可以指定,但是不可以指定其数据长度。
- 值传递过程详细化: parameter1 => 具体值
查看procedure
名称 空值? 类型 |
常见运算符
运算符 | 含义 | 举例 |
---|---|---|
mood | 取余运算 | mod(5,2) =1 |
** | 幂运算 | 2**3 = 8 |
… | 范围 | 1…5 |
|| | 字符串拼接 | ‘123’||‘kjl’ |
函数
简介
-
与过程类似,也是存储在数据库中的命名的程序块,可以接收参数也可以不接受,并且函数必须有返回值。
-
作用同过程
创建函数
create function f_name [(parameter1 .. )] return data_type is|as |
调用函数
select f_name(parameter1…);
在函数和存储过程中不可以直接使用DDL
-
在oracle的存储过程中,不能直接使用DDL语句,比方create、alter、drop、truncate等。
-
如果确实要使用,可以用动态sql,如下:
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 noticase!
评论
ValineLivere