1.包体是一种实现在包中声明函数与过程的数据对象(在包体中实现的函数或者过程必须先在包中声明)

在调用包中的方法或者过程时①控制台中 exec 方案名.包名.过程名(参数...);或者call 方案名.包名 函数名(参数...);(call可以在java中使用)

create package body 包名 is

create procedure 过程名(参数列表...) is

begin

end;

create function 函数名(参数列表... ) return 数据类型

is

begin

end;

end;

2.pl/sql里面定义变量赋初值时要用:=来赋初值.

3.可以用%type来定义变量类型比如为了让v_ename的类型更加灵活,我们使用v_ename emp.ename%type;这样v_ename就根据所在列自动决定数据类型.

4.复合变量(composite)包括pl/sql记录与pl/sql表

复合类型里面的pl/sql记录类似于高级语言中的结构体(引用pl/sql记录成员时需要加记录变量作为前缀)例如:

type 记录名称 is record(

变量1 变量类型,

变量......

)

使用记录的具体代码 create  or replace procedure pro1(v_in_empno in number)

is

type comp is record(

v_sal emp.sal%type,

v_empno emp.empno%type

);

w_w comp;

begin

select sal,empno into w_w from emp where empno=v_in_empno;

dbms_output.put_line('工资'||w_w.v_sal||'empno'||w_w.v_empno);

end;

5.pl/sql表相当于java中的数组基本语法为

type 自己定义的pl/sql数据类型 is table of 表名.列名%type index by binary_integer;

变量名 自己定义的pl/sql数据类型

6.参照变量

参照变量是用于存放数值指针的变量.通过参照变量可以使应用程序共享相同对象,降低占用空间.编写pl/sql程序时可以用游标变量(ref cursor)和对象类型变量(ref obj_type)两种参照变量类型.

7.游标变量通过游标变量我们可以取出结果集任何一行的数据基本语法:

type 自定义游标名 is ref cursor;

变量名 自定义游标名;

open 游标变量 for select语打开游标句;()

fetch 游标变量into 其他变量;(取出当前游标指向的行)

游标变量%notfound(判断游标是否指向记录最后)

close 游标名(关闭游标)

8.编写一个输入部门号即输出所有符合条件的员工姓名及工资的过程.

create or replace procedure pro2(v_in_deptno in number)

is

type v_cursor is ref cursor;

v_v v_cursor;

v_ename emp.ename%type;

v_sal emp.sal%type;

begin

open v_v for select ename,sal from emp where deptno=v_in_deptno;

loop

exit when v_v%notfound;

fetch v_v into v_ename,v_sal;

dbms_output.put_line('员工'||v_ename||'工资为'||v_sal);

end loop;

close v_v;

end;

(使用游标变量的四个步骤中定义游标变量类型定义游标变量两个步骤是在begin之前,open与fetch两个步骤在begin与end之间完成)

9.注意fetch的用法,判断是否notfound要在fetch与输出之间判断,否则会多输出一次最后一条记录.具体什么原因以后再说吧,现在没有书网上搜不到不想研究了.

10.自己写的例子:(调用时注意前面加exec)

create or replace procedure pro3(v_in_deptno number) is type sal_cursor is ref cursor; v_cursor sal_cursor; v_ename emp.ename%type; v_sal emp.sal%type; begin open v_cursor for select ename,sal from emp where deptno=v_in_deptno;(注意select语句前面有一个for)  loop fetch v_cursor into v_ename,v_sal; exit when v_cursor%notfound;(注意判断是否为notfound位置) dbms_output.put_line('部门号为'||v_in_deptno||'的部门的员工'||v_ename||'工资为'||v_sal); end loop; close v_cursor;(注意关闭游标) end;

oracle程序包写法,Oracle学习笔记20150913pl/sql编程包的写法相关推荐

  1. 黑马程序员_java自学学习笔记(八)----网络编程

    黑马程序员_java自学学习笔记(八)----网络编程 android培训. java培训.期待与您交流! 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无 ...

  2. 怎么恢复oracle的包,【学习笔记】使用dbms_backup_restore包恢复数据库

    天萃荷净 使用dbms_backup_restore包恢复数据库 Oracle提供了一个包:DBMS_BACKUP_RESTORE包是由dbmsbkrs.sql 和 prvtbkrs.plb 这两个脚 ...

  3. oracle访问控制策略查看,【学习笔记】oracle fga 细粒度访问控制研究笔记

    天萃荷净 oracle研究中心学习笔记:分享一篇关于Oracle数据库细粒度访问控制的学习笔记,详细介绍了Implement fine-grained access control (Fine-Gra ...

  4. oracle protocol=beq 不可用,学习笔记:Oracle数据库坏块 深入研究obj$坏块导致exp/expdp不能执行原因...

    天萃荷净 深入研究Oracle坏块obj$导致exp/expdp不能执行导出的原因 上篇(案例:Oracle出现obj$坏块exp/expdp导出不能导出的解决办法ORA-01578 ORA-0111 ...

  5. oracle修改asm参数文件,学习笔记:Oracle RAC参数文件管理 修改创建asm中的spfile文件...

    天萃荷净 Oracle rac创建修改asm中的spfile文件内容 create spfile to asm --查看sid SQL> show parameter instance_name ...

  6. oracle in查询 一直等待,学习笔记:Oracle awr 分析解决inactive transaction branch等待事件...

    天萃荷净 通过Oracle AWR报告分析inactive transaction branch等待事件的原因 分析一份awr,发现不太熟悉的等待事件"inactive transactio ...

  7. 计算机、程序和 Java 概述 学习笔记

    计算机.程序和java概述 学习笔记 1.1什么是计算机 简单来说:计算机就是 ' 存储 ' 和 ' 处理 ' 数据的电子设备. 计算机包括硬件( hardware ) 和软件( software) ...

  8. 黑马程序员Java教程学习笔记(五)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...

  9. 【黑马程序员新版Linux学习笔记】Linux系统实用操作命令——操作演示

    [黑马程序员新版Linux学习笔记]Linux 零基础快速入门: (一)Linux基本命令--操作演示 (二)Linux用户和权限 -- 操作演示 (三)Linux 小技巧快捷键 (四)Linux系统 ...

最新文章

  1. 通过KNN算法,确定球星的风格(很水)
  2. centos 7 文档服务器,centos 7 web服务器
  3. apk改之理_一份礼物.apk-O泡果奶的逆向分析
  4. 太阳能板清洗机器人科沃斯_太阳能电池板清洁机器人
  5. 计算机组成原理 微指令编码_计算机组成原理(指令)
  6. rabbitmq可靠性投递_RabbitMQ 可靠投递
  7. Linux 套接字编程中的 5 个隐患
  8. maya中将每帧渲染成图片,再用播放器播放
  9. 【ABAP系列】SAP ABAP SY-SUBRC的含义解析
  10. 超链接把一个值传到多个页面的方法
  11. UI设计教程学习分享:APP布局
  12. Mocha BSM产品亮点——SNMP Trap的支持
  13. 机器学习- 吴恩达Andrew Ng - week3-2 Logistic Regression Model
  14. Adobe CS5 序列号及配置方法
  15. 快速刷微信小程序访问量和浏览量
  16. Java EasyPoi简单报表+复合表头报表的导出
  17. ModuleNotFoundError: No module named ‘typing_extensions‘
  18. Windows网络活跃点决定使用的优先权
  19. 都要2023年了,Android开发是否还值得入场?
  20. MySQL - binlog 图文详解

热门文章

  1. 远程连接服务器频繁掉线,远程桌面一连就断的解决方法(经常掉线)
  2. 【软件构造】第二章知识整理
  3. 计算机组成原理字发生器及跑马灯,060仪器(标书)
  4. 中小型企业选择云计算服务模型,需要慎重啊
  5. kettle 表输入 显示重复_数字显示仪DXS-2020S
  6. 解决IAR中Go to definition of不可用
  7. WPS word文档怎么设置固定字体与字体大小?
  8. 思科sp ccie 认证中必看网络安全之垃圾邮件过滤技术
  9. OpenVDB for Mitsuba
  10. P6599 「EZEC-2」构造