重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在存储过程或函数里调用oracle包的话,首先要有执行这个包的权限;如果包属于其他的用户(不是系统包),调用时:用户名.包名.存储过程(参数)名或者 变量:=用户名.包名.函数(参数);因为函数有返回值,变量类型要跟函数返回值的类型一致。
十多年的武冈网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整武冈建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“武冈网站设计”,“武冈网站推广”以来,每个客户项目都认真落实执行。
ORACLE存储过程 以oracle自带例子数据库的表举例
1、
create or replace procedure p
is
cursor c is
select * from emp2 for update;
begin
for v_emp in c loop
if(v_emp.sal 2000) then
update emp2 set sal =sal+1 where current of c ;
elsif(v_emp.sal=2000) then
delete from emp2 where current of c;
end if;
end loop;
commit;
end;
创建了存储过程不代表运行了存储过程;
运行此存储过程 :
方式一 exec p;
方式二
begin
p;
end;
2、带参数的存储过程
in 相当于程序里的参数,供传入用,在存储过程不能改变其值;
out 相当于程序里的返回值,在存储过程中可以为其赋值传出;
in out 既可以当参数又可以当返回值用;
不带上述说明符默认为in类型;
下例中v_a v_b 为in类型
v_c 为out类型
v_d 为in out 类型
create or replace procedure p(v_a in number,v_b number,v_c out number,v_d in out number)
is
begin
if(v_a v_b) then
v_c := v_a;
else
v_c := v_b;
end if;
v_d := v_d+1;
end;
--- 调试时:
可以在命令窗口调试,出错时 用show errors 显示出错信息;
可以在plDv中调试;
--- 运行时:
可以在命令窗口运行:
declare
v_a number:=3;
v_b number:=4;
v_c number;
v_d number:=5;
begin
p(v_a,v_b,v_c,v_d);
dbms_output.put_line(v_c);
dbms_output.put_line(v_d);
end;
可以在plDv中调试;
sqlplus或者PL/SQL
SQL窗口
输入(单独调用存储过程):
无参数
EXEC
过程名;
或者
BEGIN
过程名
END;
IN
参数
EXEC
过程名(入参数..);
或者
BEGIN
过程名(入参数...)
END;
OUT参数,IN
OUT参数
variable
绑定变量名
数据类型;
//定义一个变量接收出参数的值;
EXEC
过程名(:绑定变量名);
PL/SQL SQL窗口 输入存储过程名,右键测试(英文版为test),出现测试界面,输入对应参数后F8,如果没有参数直接F8.
已经有人回答的很专业了!\x0d\x0a原则就是:你要调用哪个存储过程,就要为该存储过程传入它需要的参数\x0d\x0a它定义的几个,你就传入几个\x0d\x0a当然参数的类型要对应上。\x0d\x0a还有就是如果一个存储过程中定义了out类型的参数,当你在调用它的时候,这个out类型的参数也要参入,看它定义的是什么类型的out参数。然后定义一个该类型的变量,传入进去,用于接收存储过程返回的值。然后用这个值,去做下面的逻辑。