oracle-存储过程(procedure)
程序员文章站
2022-07-10 15:11:03
...
存储过程
--可以理解为给匿名块起个名字,可以保存到数据库服务器上,方便以后的应用。
--预编译(已经编译好的)sql语句。
---oracle语句也是要先编译在运行的语言。所以说编译好了,就可以直接运行了,节约了再次编译的时间。
-------------------
写一个存储过程:
将pl/sql语句块改写成存储过程
1.将declare改成is 或者 as
2.加一个存储过程的定义头
create or replace procedure pro_名
is
//声明部分
begin
//执行部分
end;
查看过程,确保过程正确建立。
使用存储过程:
begin
pro_名(参数列表);
end;
或者
在命令窗口用 execute pro_名(参数列表);
查看存储过程错误信息
1. pl/sql
procedures
2.命令窗口
show error
----------------------------
带参数的过程:
参数的写法:变量名 输入/输出 变量类型
参数的类型不要写成 number(10) 要写成number; varchar2也不要写长度
输入参数 在过程里 是不可以被修改的。
输出参数 不能输入,只能在过程中给赋值
若是既要能输入又要能输出呢--- v_a in out number
过程没有返回值,但是有输出参数。同样可以返回信息
create or replace procedure pro_get_bigger(v_a in number,v_b in number,v_bigger in out number)
is
begin
if(v_a > v_b) then
v_bigger :=v_a;
else
v_bigger :=v_b;
end if;
end;
----
declare
v_a number(10) := 40;
v_b number(10) :=20;
v_bigger number(10);
begin
pro_get_bigger(v_a,v_b,v_bigger);
end;
--重点:得到update影响的函数
隐士游标的使用
SQL%rowcount--获取一个number类型的返回值,最后一条语句影响的行数。
---------------------------------------------
函数与过程的区别:
1.函数有返回值,过程没有返回值,但是可以通过输出参数实现返回值得功能‘
2.在sql语句中函数一般实现一些稍复杂的计算功能
存储过程主要完成独立过程。
----------------------------------------
函数
1.分 内置函数 自定义函数
--可以理解为给匿名块起个名字,可以保存到数据库服务器上,方便以后的应用。
--预编译(已经编译好的)sql语句。
---oracle语句也是要先编译在运行的语言。所以说编译好了,就可以直接运行了,节约了再次编译的时间。
-------------------
写一个存储过程:
将pl/sql语句块改写成存储过程
1.将declare改成is 或者 as
2.加一个存储过程的定义头
create or replace procedure pro_名
is
//声明部分
begin
//执行部分
end;
查看过程,确保过程正确建立。
使用存储过程:
begin
pro_名(参数列表);
end;
或者
在命令窗口用 execute pro_名(参数列表);
查看存储过程错误信息
1. pl/sql
procedures
2.命令窗口
show error
----------------------------
带参数的过程:
参数的写法:变量名 输入/输出 变量类型
参数的类型不要写成 number(10) 要写成number; varchar2也不要写长度
输入参数 在过程里 是不可以被修改的。
输出参数 不能输入,只能在过程中给赋值
若是既要能输入又要能输出呢--- v_a in out number
过程没有返回值,但是有输出参数。同样可以返回信息
create or replace procedure pro_get_bigger(v_a in number,v_b in number,v_bigger in out number)
is
begin
if(v_a > v_b) then
v_bigger :=v_a;
else
v_bigger :=v_b;
end if;
end;
----
declare
v_a number(10) := 40;
v_b number(10) :=20;
v_bigger number(10);
begin
pro_get_bigger(v_a,v_b,v_bigger);
end;
--重点:得到update影响的函数
隐士游标的使用
SQL%rowcount--获取一个number类型的返回值,最后一条语句影响的行数。
---------------------------------------------
函数与过程的区别:
1.函数有返回值,过程没有返回值,但是可以通过输出参数实现返回值得功能‘
2.在sql语句中函数一般实现一些稍复杂的计算功能
存储过程主要完成独立过程。
----------------------------------------
函数
1.分 内置函数 自定义函数