一、匿名块和命名块

◆PL/SQL块分为良好总:命名块和匿名块。
◆匿名块:以declare或begin开始,每次执行匿名块都要通过客户端工具将其发送给Oracle,经过语法分析、编译然后执行。
◆命名块:具有名称的PL/SQL块,这些命名块被存储在Oracle中,编译一次,以后只可调用就可多次执行。如:存储过程、存储函数、包、触发器等、
存储过程:无返回值;
存储函数:有返回值;
包:可容纳多个过程或函数的一个容器(较好管理这些过程和函数,类似于java中的包);
触发器:在合适的实际被自动执行。(无需调用,在满足要求的情况下,自动执行;触发器也被称为隐式执行的命名块!)
◆匿名块和命名块的区别:
匿名块:能够动态地创建和执行过程代码的PL/SQL结构,每次执行匿名块时就会自动的将该块数据通过文本的形式发送给Oracle,然后执行,反馈给用户,每次执行都需发送和编译!
命名块:持久化的方式将代码作为数据库属性储存在系统目录中,在Oracle中编译一次,下次若使用可直接调用执行,无需再次编译,非常高效。
二、存储过程:
存储过程是具有名称、完整特定功能和无返回值的PL/SQL块,只需发送调用命令即可执行该过程,能够实现代码的重用,不能在SQL语句当中调用!
◆创建存储过程:
格式:create[or replace] procedure proc_name
[(para1[int|out|in out]type,...)]
{is|AS}
prdc_body
proc_name表示存储过程名;
para1表示参数名;type是参数para1的数据类型;
proc_body表示过程体.过程体是遵循PL/SQL块的结构,但不能使用declare关键字,end后面可带有过程名。
注意:参数列表是可选的
◆调用存储过程:(存储过程创建的时候会自动的保存在Oracle中,在执行储存过程的时候,PL/SQL块只需调用即可!)
(1)如果在PL/SQL块中调用,直接使用proc_name(...);
(2)如果使用sql plus环境中,需要使用 EXEC proc_name(...)的形式;
(3)如果存储过程无参数,这调用时可带有圆括号也可不带!
【示例】创建一个无参数的存储过程(显示所有员工的信息)
create or replace procedure pr_show_employee
is
--进入块的声明部分(无需编写declare关键字)
--定义游标
cursor v_emp_cursor is select * from employees;
--定义游标类型的记录型行变量
v_emp_record v_emp_cursor%rowtype;
begin
for v_emp_record in v_emp_cursor loop
dbms_output.put_line(v_emp_record.employee_id||','||v_emp_record.first_name||','||
v_emp_record.last_name||','||v_emp_record.salary);
end loop;
end pr_show_employee ;
--调用存储过程(在一个匿名块中执行)
begin pr_show_employee(); end;
【示例】存储过程的参数接受产品类别编号,输出该类所有产品的信息
create or replace procedure pr_show_product(
product_type products.product_type_id%type)
as
--定义游标
cursor v_prd_cursor is select * from products p where product_type = p.product_type_id;
--定义游标的行类型变量
v_prd_record v_prd_cursor%rowtype;
begin
for v_prd_record in v_prd_cursor loop
dbms_output.put_line(v_prd_record.product_id||','||v_prd_record||','||product_type_id||','||v_prd_record.description||','
||v_prd_record.
name||','||v_prd_record.price);
end loop;
end pr_show_product;
--调用存储过程(执行)
declare
--定义编号变量的类型
v_prd_type_id products.product_type_id%type := 1;
begin
pr_show_product(v_prd_type_id);
end;
◆参数的传递模式:
参数传递有三种模式:in、out、in out
in:过程调用时,实参的值会传递给形参。形参被看作是常量,在过程内部不能被修改。
out:过程调用时,实参的值被忽略,形参为null值,在过程内部形参变量可以读写。过程结束时,形参的值赋值给实参!
in out:过程调用时,实参的值传递给形参,在过程内部形参变量可读可写,过程结束时,形参的值赋值给实参。
注意:如果在定义存储过程时,没有指明参数传递模式,则默认为 in 模式
【示例】创建一个有参数传递默认的存储过程
create or replace procedure pr_test(p_1 in out varchar2)
is
begin
dbms_output.put_line('p_1='||p_1);
p_1 := 'abc';
dbms_output.put_line('p_1='||p_1);
end pr_test;
--调用存储过程
declare
v_1 varchar2(5) := 'wwww';
begin
pr_test(v_1);
dbms_output.put_line('v_1='||v_1);
end;
注意:(1)在创建存储过程时,形参类型不能指定具体的长度,字符类型就为 varchar2,数字类型就是number;默认和实参类型的长度等同
(2)使用 in 模式,形参接受实参的值,默认形参为常量,在存储过程当中不能被修改,否则出错!
(3)使用 out 模式,实参的值被忽略,但必须是变量,用来接收存储过程执行完形参的值;而形参是可读可写的。
(4)使用 in out 模式,实参的值传递给形参,也必须是变量,形参可读可写,最后执行完存储过程形参的值传递给实参!
(5)参数传递,实参的值和长度或精度约束会传递给形参,因此,形参不能有长度或精度的约束。在过程中给形参赋值时,要注意它的长度或精度的限制!
感谢 阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Oracle中命名块之存储过程的详解
# Oracle中命名块
# ORACLE 10g 安装教程[图文]
# Oracle数据库下载及安装图文操作步骤
# Oracle存储过程基本语法介绍
# oracle常用sql语句
# oracle 创建表空间详细介绍
# ORACLE常用数值函数、转换函数、字符串函数
# oracle数据库tns配置方法详解
# 存储过程
# 返回值
# 只需
# 创建一个
# 结束时
# 发送给
# 都要
# 多个
# 将其
# 也可
# 能在
# 要注意
# 希望能
# 较好
# 能有
# 就可
# 被称为
# 可选
# 时就
# 可直接
相关文章:
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何用美橙互联一键搭建多站合一网站?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
桂林网站制作公司有哪些,桂林马拉松怎么报名?
已有域名和空间,如何快速搭建网站?
浅析上传头像示例及其注意事项
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
公司网站的制作公司,企业网站制作基本流程有哪些?
如何在阿里云虚拟主机上快速搭建个人网站?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何规划企业建站流程的关键步骤?
如何批量查询域名的建站时间记录?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
如何撰写建站申请书?关键要点有哪些?
如何在橙子建站中快速调整背景颜色?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
如何确认建站备案号应放置的具体位置?
建站之星伪静态规则如何设置?
网站制作话术技巧,网站推广做的好怎么话术?
建站之星备案是否影响网站上线时间?
建站之星安装后如何自定义网站颜色与字体?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
c# 服务器GC和工作站GC的区别和设置
购物网站制作公司有哪些,哪个购物网站比较好?
贸易公司网站制作流程,出口贸易网站设计怎么做?
如何用wdcp快速搭建高效网站?
,购物网站怎么盈利呢?
如何在建站之星绑定自定义域名?
个人网站制作流程图片大全,个人网站如何注销?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
如何通过网站建站时间优化SEO与用户体验?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
重庆市网站制作公司,重庆招聘网站哪个好?
表情包在线制作网站免费,表情包怎么弄?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
视频网站制作教程,怎么样制作优酷网的小视频?
南京网站制作费用,南京远驱官方网站?
如何做静态网页,sublimetext3.0制作静态网页?
SQL查询语句优化的实用方法总结
如何高效生成建站之星成品网站源码?
建站主机服务器选购指南:轻量应用与VPS配置解析
如何快速查询域名建站关键信息?
*请认真填写需求信息,我们会在24小时内与您取得联系。