读书人

SQL编程(2)

发布时间: 2012-07-04 19:33:55 作者: rapoo

SQL编程(二)

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


--参照变量? 用于存放数值指针的变量
--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输出变量

读书人网 >编程

热点推荐