博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle总结2
阅读量:4198 次
发布时间:2019-05-26

本文共 2397 字,大约阅读时间需要 7 分钟。

——使用复合数据类型

1.PL/SQL记录(Record)以及%ROWTYPE属性

declare  type x is record(  ename emp.ename%type,  salary emp.sal%type,  dno emp.deptno%type);  xx x;begin  select ename,sal,deptno into xx from emp where empno=&no;  dbms_output.put_line(xx.ename);end;
--------rowtype 完全匹配表中的列declare  a dept%rowtype;begin  a.deptno:=11;  a.dname:='UUUUUUU';  a.loc:='BEIJING';  insert into dept values (a.deptno,a.dname,a.loc);end;

2.索引表(INDEX)、嵌套表、和变长数组(VARRAY)
--------索引表type type_name is table of element_type[not null] index by key_type;identifier type_name;--------嵌套表type type_name is table of element_type;identifier type_name;--------变长数组type type_name is varray(size_limit) of element_type[not null];identifier type_name;
3.使用记录表可以有效的处理多行多列的数据
declare  type x is table of emp%rowtype index by binary_integer;  xx x;begin  select * into xx(2) from emp where empno=&no;  dbms_output.put_line('雇员姓名:'||xx(2).ename);  dbms_output.put_line('雇员工资:'||xx(2).sal);end;
4.集合方法
  •  EXISTS
  • COUNT
  • LIMIT
  • FIRST/LAST
  • PRIOR/NEXT
  • EXTEND
  • TRIM
  • DELETE
5.批量绑定FORALL
  • INDICES OF
  • VALUE OF
  • BULK COLLECT

————使用游标

1.使用显示游标以及游标属性
declare   cursor emp_cursor is select ename,sal from emp where deptno=10;   v_ename emp.ename%type;   v_sal emp.sal%type;begin   open emp_cursor;   loop     fetch emp_cursor into v_ename,v_sal;     exit when emp_cursor%notfound;     dbms_output.put_line(v_ename||':'||v_sal);   end loop;   close emp_cursor;end;
  • %ISOPEN
  • %FOUND
  • %NOTFOUND
  • %ROWCOUNT

2.参数游标

 
      定义参数游标时,需要指定参数名及其数据类型

3.显示游标更新或删除数据

同过游标更新或删除数据,在定义游标时必须带有FOR UPDATE 

4.for循环

----FOR循环中直接使用子查询begin   for emp_record in   (select ename,sal from emp)loop   dbms_output.put_line(emp_record.ename);   end loop;end;

5.游标变量

必须首先定义REF CURSOR类型,才能定义游标变量。return 子句可以不定义

6.FETCH..BULK COLLECT INTO  语句和CURSOR表达式

————开发子程序

1.建立和调用过程

  • CREATE PROCEDURE   [IN  OUT IN OUT]
  • EXECUTE/CALL
位置传递  名称传递  组合传递

2.建立和调用函数

必须使用RETURN 子句。其他跟过程类似
3.管理PL/SQL子程序
  • USER_OBJECTS
  • USER_SOURCE
  • SHOW ERRORS

————开发包 

1.建立包规范和包体
关键字PACKAGE/  PACKAGE BODY
2.在包内定义公用组件和私有组件
  • 公用组件在包头定义私有的在包体定义 
  • 不同作用域可以重复赋值
  • 公有变量不能重复定义,私有在过程中可以重复定义
  • 包的内部可以定游标类型,但不能定义游标变量。可以定义静态游标
---当使用其他用户身份调用公用组件时,必须在组件名前加用户名和包名作为前缀----SCOTT.EMP_PACKAGE.。。。。----当调用远程数据库包的公用组件是,在组件名前加包名作为前缀在组件名后需要带有数据库链名作为后缀----EMP_PACKAGE.ADD_EMPLOYEE@TENDER(1111,'SCOTT',1233,10)
3.使用重载
多个具有相同名称的子程序。以java中重载相似但是返回类型必须相同
4.建立构造过程
初始化包的全局变量
5.纯度级别
-----纯度级别  ---WNDS用于限制函数不能修改数据库数据  --- WNPS 用于限制函数不能修改包变量  --- RNDS 用于限制函数不能读取数据库数据  --- RNPS  用于限制函数不能读取包变量

转载地址:http://phzli.baihongyu.com/

你可能感兴趣的文章
【一天一道LeetCode】#76. Minimum Window Substring
查看>>
【计算机网络 第五版】阅读笔记之一:概述
查看>>
【计算机网络 第五版】阅读笔记之二:物理层
查看>>
【计算机网络 第五版】阅读笔记之三:数据链路层
查看>>
【计算机网络 第五版】阅读笔记之四:网络层
查看>>
【计算机网络 第五版】阅读笔记之五:运输层
查看>>
【一天一道LeetCode】#77. Combinations
查看>>
【一天一道LeetCode】#78. Subsets
查看>>
【一天一道LeetCode】#79. Word Search
查看>>
【一天一道LeetCode】#81. Search in Rotated Sorted Array II
查看>>
【数据结构与算法】深入浅出递归和迭代的通用转换思想
查看>>
【一天一道LeetCode】#83. Remove Duplicates from Sorted List
查看>>
【一天一道LeetCode】#91. Decode Ways
查看>>
【一天一道LeetCode】#92. Reverse Linked List II
查看>>
【一天一道LeetCode】#93. Restore IP Addresses
查看>>
【一天一道LeetCode】#94. Binary Tree Inorder Traversal
查看>>
【一天一道LeetCode】#112. Path Sum
查看>>
【一天一道LeetCode】#113. Path Sum II
查看>>
【一天一道LeetCode】#114. Flatten Binary Tree to Linked List
查看>>
【unix网络编程第三版】阅读笔记(二):套接字编程简介
查看>>