Oracle存储过程及举例(几种参数情况的存储过程)

Oracle存储过程及举例(几种参数情况的存储过程)Oracle存储过程及举例(几种参数情况的存储过程)

大家好,又见面了,我是你们的朋友全栈君。

存储过程
存储过程可以有多个或者零个输入输出参数,但通常没有返回值。存储过程是已经编译好的代码,所以执行效率非常高
存储过程创建语句

 

create [or replace] procedure 存储过程名 [(输入、输出参数、in/out模式参数)]
is/as
begin
sentences;
[exception
 sentences;]
end 存储过程名;

举例一个没有参数的存储过程

 

create or replace procedure pro_no_par is
begin
update employees set salary=salary+100 where employee_id=100;
commit;
dbms_output.put_line('工资已经调整!!');
end pro_no_par;

结果:

 

begin
pro_no_par;
end;
匿名块已完成
工资已经调整!!

举例一个带in模式参数的存储过程
参数的方式有三种:指定名称传递;按位置传递;混合方式传递
注意混合方式传递从使用【指定名称传递】的位置开始,后面的参数必须使用【指定名称传递】

 

create or replace procedure pro_in_par
( var_1 in nvarchar2,
  var_2 in number)   is
begin
update employees set salary=salary+var_2 where first_name=var_1;
commit;
dbms_output.put_line(var_1||'的工资已经增加了'||var_2||'!');
end pro_in_par;

结果:

 

begin
execute pro_in_par(var_1=>'Steven',var_2=>100);
end
匿名块已完成
Steven的工资已经增加了100!
begin
execute pro_in_par('Steven',var_2=>100);
end
匿名块已完成
Steven的工资已经增加了100!

pl/sql developer下的调用语法
begin
pro_in_par('Steven',100);
end
--举例混合参数输入,后面的参数没有使用【指定名称传递】
execute pro_in_par(var_1=>'Steven',100);
在行 42 上开始执行命令时出错:
execute pro_in_par(var_1=>'Steven',100)
错误报告:
ORA-06550: 第 1 行, 第 34 列: 
PLS-00312: 一个定位相关参数没有说明其相关性
ORA-06550: 第 1 行, 第 7 列: 
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

观察存储过程中变量的使用(存储过程的输入输入参数,字符型不用定义长度,内部的字符型型变量是需要带长度的)

内部的变量不需要用declare,内部变量的定义在as之后,

 begin end 之前

--表准备
create table chl_simple(fid int,fname  varchar2(200));
--存储过程
create or replace procedure chl_ztablecreate01
(var_fname in varchar2)
as
var_sql varchar2(200);
begin
var_sql:=var_fname;
insert into chl_simple(fid,fname) values(1,var_sql);
end;
--存过程调用
begin
chl_ztablecreate01('12345');
end;

举例一个带out模式和in out模式参数存储过程

create procedure pro_out_par
( var_1 in out number,
  var_2 out employees.first_name%type,
  var_3 out employees.phone_number%type) is
begin
select first_name,phone_number into var_2,var_3 from employees where employee_id=var_1;
end pro_out_par;
--执行
declare 
ex_var_1 number;
ex_var_2  employees.first_name%type;
ex_var_3  employees.phone_number%type;
begin
ex_var_1:=102;
pro_out_par(ex_var_1,ex_var_2,ex_var_3);
dbms_output.put_line('员工号为'||ex_var_1||'的员工姓名是;'||ex_var_2||',联系电话是:'||ex_var_3);
end;

结果;

匿名块已完成
员工号为102的员工姓名是;Lex,联系电话是:515.123.4569

只有努力不会背叛
博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160929.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android onresume函数,android – 在Activity中重新创建后未调用onResume

    android onresume函数,android – 在Activity中重新创建后未调用onResume在应用程序设置中进行某些更改时,我在recreate的onActivityResult中调用MainActivity。重新创建后,不调用onResume。我也收到错误:E/ActivityThread:Performingpauseofactivitythatisnotresumed从this问题开始,我了解到不能从onResume调用此函数。但是我从onActivityResul…

    2022年6月2日
    108
  • getElementById返回的是什么?串讲HTML DOM[通俗易懂]

    getElementById返回的是什么?串讲HTML DOM[通俗易懂]通过getElementById函数,了解HTMLDOM,被JS封装后的标签都有哪些属性,怎么调用等。

    2022年7月1日
    42
  • 卡盟网站程序源码,支持无限分站,货源共享「建议收藏」

    卡盟网站程序源码,支持无限分站,货源共享「建议收藏」服务器系统:cenos7.x64位(购买vps都知道ba?安装7.x以上系统)宝塔安装命令:bt.cn(自行获取)(baota我已经安装好了,接下来给大家演示如何操作搭建卡信乐)ssh输入宝塔命令会自动安装好自己查看一下登陆地址和账号密码就可以登陆面板后安装apache2.4+mysql5.5+php5.6phpadmin4.7(应该都会安装把!)登陆宝塔,打开网站的根目录的home文件夹,上传源码然后解压上传好后解压文件修改vhost文件里的域名创建一个数据库yunos数据库

    2022年8月13日
    3
  • JAVA的网络编程基础概念建议收藏

    网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协

    2021年12月20日
    41
  • LAN8720 100M 掉线问题解决

    LAN8720 100M 掉线问题解决最近在做一块板子的时候,使用的phy芯片为LAN8720,在使用的发现老是ping一段时间后自动掉线,从软件问题一直查找,最后发现是LAN8720掉线了,且wang网口绿灯一直常亮,拔线网线也是一样,黄灯不闪烁,且phy发热严重。问题出在本来网口电源是下面这样,但是在焊接时没有找到磁珠,就用0欧电阻代替,结果电源干扰大不稳定,换上磁珠后ping未出现网口掉线现象,发热现象明显减少。…

    2025年7月12日
    2
  • html5爱心代码_html爱心动画代码

    html5爱心代码_html爱心动画代码代码<!doctypehtml><html><head><metacharset=”utf-8″><title>canvas爱心</title><style>html,body{height:100%;padding:0;margin:0;background:#000;}canvas{position:absolute;width:100%;

    2022年10月10日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号