SQL编程(二)

2014-11-24 13:31:05 · 作者: · 浏览: 0

本章继续上一章,内容并没有过多解释,大家试一试就明白了

--参照变量 用于存放数值指针的变量
--REF CURSOR 实现动态游标操作
DECLARE
TYPE s IS REF CURSOR;
emp_cursor s;
v_name emp.ename%TYPE;
v_sal emp.sal%TYPE;
BEGIN
OPEN emp_cursor FOR
SELECT ename,sal FROM emp WHERE deptno = 's1';
LOOP
FETCH emp_cursor INTO v_name,v_sal;
EXIT WHEN emp_cursor%NOTFOUND;
dbms_output.put_line(v_name||v_sal);
END LOOP;
CLOSE emp_cursor;
END;

--REF objtype 可用于共享数据使用
CREATE OR REPLACE TYPE addrr AS OBJECT(
street VARCHAR2(5),
city VARCHAR2(6),
state VARCHAR2(10),
zipcode VARCHAR2(6),
owner VARCHAR2(10)
);
CREATE TABLE address OF addrr;
INSERT INTO address VALUES('北路','沈阳','辽宁','11000','fei');
commit;

CREATE TABLE p(
id VARCHAR2(32) primary KEY,name VARCHAR2(10),addrr REF addrr
);

INSERT INTO p SELECT 1,'fei',ref(p)
FROM address p WHERE p.owner='fei';
commit;

--非PL/SQL变量
--使用时要用 ‘:变量名’

--在SQL*PLUS中使用
var name VARCHAR2
BEGIN
SELECT ename INTO :name FROM emp
WHERE empno ='2';
END;

--使用 procedure Bulider变量 要用.create创建变量
.CREATE CHAR name LENGTH 10;
BEGIN
SELECT ename INTO :name FROM emp
WHERE empno ='2';
END;
TEXT_IO.PUT_LINE(:name);--TEXT_IO输出变量

作者“飞鱼”