Oracle复合变量的使用举例
来源:互联网 发布:php 无法设置cookie 编辑:程序博客网 时间:2024/05/01 11:17
--oracle复合标量
/*****************************pl/sql记录 (类似于结构体) *********************/
--只能接受一条记录
DECLARE
TYPE EMP_RECORD IS RECORD(
EMPNO EMP.EMPNO%TYPE,
ENAME EMP.ENAME%TYPE,
DNAME DEPT.DNAME%TYPE);
V_EMP EMP_RECORD;
BEGIN
SELECT E.EMPNO, E.ENAME, D.DNAME INTO V_EMP
FROM DEPT D
LEFT JOIN EMP E ON D.DEPTNO = E.DEPTNO
WHERE E.EMPNO = 7369;
DBMS_OUTPUT.put_line(V_EMP.EMPNO || '-' || V_EMP.ENAME || '-' || V_EMP.DNAME);
END;
/************************* pl/sql表 **************************/
--第一种用法
DECLARE
TYPE EMP_TABLE IS TABLE OF EMP%ROWTYPE;
ET EMP_TABLE;
BEGIN
--使用如下的语句将查询得到的结果集批量的保存在变量里
SELECT E.* BULK COLLECT INTO ET FROM EMP E;
FOR I IN ET.FIRST() .. ET.LAST() LOOP
DBMS_OUTPUT.put_line(I||'-姓名:' || ET(I).ENAME || '- 工作:' || ET(I).JOB);
END LOOP;
END;
--第二种用法
DECLARE
TYPE EMP_TABLE IS TABLE OF EMP.ENAME%TYPE INDEX BY BINARY_INTEGER;
ET EMP_TABLE;
BEGIN
--赋值
FOR I IN (SELECT ROWNUM, ENAME FROM EMP) LOOP
ET(I.ROWNUM) := I.ENAME;
END LOOP;
--取值
FOR J IN ET.FIRST() .. ET.LAST() LOOP
DBMS_OUTPUT.put_line(J || '-' || ET(J));
END LOOP;
END;
/**************************参照变量(游标)*******************************/
DECLARE
TYPE EMP_CURSOR IS REF CURSOR;
V_EMP_CURSOR EMP_CURSOR;
V_EMP_RECORD EMP%ROWTYPE;
BEGIN
OPEN V_EMP_CURSOR FOR SELECT * FROM EMP;
LOOP
FETCH V_EMP_CURSOR INTO V_EMP_RECORD;
EXIT WHEN V_EMP_CURSOR%NOTFOUND;
DBMS_OUTPUT.put_line(V_EMP_RECORD.EMPNO || '-' || V_EMP_RECORD.ENAME);
END LOOP;
END;
-- 嵌套表
-- varry 动态数组
/*****************************pl/sql记录 (类似于结构体) *********************/
--只能接受一条记录
DECLARE
TYPE EMP_RECORD IS RECORD(
EMPNO EMP.EMPNO%TYPE,
ENAME EMP.ENAME%TYPE,
DNAME DEPT.DNAME%TYPE);
V_EMP EMP_RECORD;
BEGIN
SELECT E.EMPNO, E.ENAME, D.DNAME INTO V_EMP
FROM DEPT D
LEFT JOIN EMP E ON D.DEPTNO = E.DEPTNO
WHERE E.EMPNO = 7369;
DBMS_OUTPUT.put_line(V_EMP.EMPNO || '-' || V_EMP.ENAME || '-' || V_EMP.DNAME);
END;
/************************* pl/sql表 **************************/
--第一种用法
DECLARE
TYPE EMP_TABLE IS TABLE OF EMP%ROWTYPE;
ET EMP_TABLE;
BEGIN
--使用如下的语句将查询得到的结果集批量的保存在变量里
SELECT E.* BULK COLLECT INTO ET FROM EMP E;
FOR I IN ET.FIRST() .. ET.LAST() LOOP
DBMS_OUTPUT.put_line(I||'-姓名:' || ET(I).ENAME || '- 工作:' || ET(I).JOB);
END LOOP;
END;
--第二种用法
DECLARE
TYPE EMP_TABLE IS TABLE OF EMP.ENAME%TYPE INDEX BY BINARY_INTEGER;
ET EMP_TABLE;
BEGIN
--赋值
FOR I IN (SELECT ROWNUM, ENAME FROM EMP) LOOP
ET(I.ROWNUM) := I.ENAME;
END LOOP;
--取值
FOR J IN ET.FIRST() .. ET.LAST() LOOP
DBMS_OUTPUT.put_line(J || '-' || ET(J));
END LOOP;
END;
/**************************参照变量(游标)*******************************/
DECLARE
TYPE EMP_CURSOR IS REF CURSOR;
V_EMP_CURSOR EMP_CURSOR;
V_EMP_RECORD EMP%ROWTYPE;
BEGIN
OPEN V_EMP_CURSOR FOR SELECT * FROM EMP;
LOOP
FETCH V_EMP_CURSOR INTO V_EMP_RECORD;
EXIT WHEN V_EMP_CURSOR%NOTFOUND;
DBMS_OUTPUT.put_line(V_EMP_RECORD.EMPNO || '-' || V_EMP_RECORD.ENAME);
END LOOP;
END;
-- 嵌套表
-- varry 动态数组
- Oracle复合变量的使用举例
- ORACLE 中的复合变量的使用
- Oracle 中使用的%TYPE和%ROWTYPE类型的变量和复合变量
- oracle中复合变量的用法
- oracle 复合变量 记录
- [oracle编程]pl/sql --标量 复合变量以及游标的简单使用
- Oracle复合变量之RECORD
- ORACLE DECODE函数的使用举例
- Oracle 变量的使用
- ORACLE复合索引使用 注意事项
- oracle的索引使用:复合索引中的前导索引
- oracle的引用型变量和记录型变量程序举例
- Oracle 使用索引和不使用索引的举例
- 前台后台的变量举例
- oc-复合的使用
- 定义并使用变量,复合类型
- 基于Lotus Notes 8 的银行业复合应用举例
- Oracle 复合索引的理解
- 学习
- Yii: 设置数据翻页
- Android 读取doc文件
- Android读写文件
- Java 序列化的高级认识【转】
- Oracle复合变量的使用举例
- ArrayDemo
- ArrayDemo1
- ArrayDemo2
- 判断两个链表是否相交
- ArrayDemo3
- freebsd ports 操作
- 为github帐号添加SSH keys
- ASP.NET 弹出对话框和页面之间传递值的经验总结【转】