【初识Oracle】⑥PL/SQL基础基本程序块以及存储类型
2014-08-08 16:42
666 查看
--PL/SQL基础 Procedure Language & Structured Query Language --PL/SQL的基本组成 --声明部分 DECLARE --执行部分 BEGIN --异常处理部分 EXCEPTION END; --(匿名块)键盘接收两个数字并打印 DECLARE num1 NUMBER; num2 NUMBER; results NUMBER; BEGIN num1:=&num1; num2:=&num2; results:=num1+num2; dbms_output.put_line(num1||'+'||num2||'='||results); END; --(匿名块)输出当前部门的人数 DECLARE num1 NUMBER; BEGIN SELECT COUNT(*) INTO num1 FROM emp WHERE deptno=&deptno; dbms_output.put_line('总人数:'||num1); END; SELECT * FROM emp; --对表格数据进行设置 DECLARE BEGIN UPDATE emp SET sal=sal*1.2 WHERE deptno=10; END; --设置函数 CREATE OR REPLACE PROCEDURE update_emp(dno NUMBER) IS BEGIN UPDATE emp SET sal=sal/1.2 WHERE deptno=dno; END; DECLARE dno NUMBER; BEGIN dno:=&dno; update_emp(dno); END; --查询并打印指定的员工信息 DECLARE v_name VARCHAR2(10); v_salary NUMBER; v_hiredate DATE; BEGIN SELECT ename,sal,hiredate INTO v_name,v_salary,v_hiredate FROM emp WHERE empno=&empno; dbms_output.put_line('雇员名称:'||v_name); dbms_output.put_line('薪水:'||v_salary); dbms_output.put_line('入职时间:'||v_hiredate); END; --%TYPE可以自动根据列或者其他变量的类型和长度定义新变量 DECLARE v_name emp.ename%TYPE; v_salary emp.sal%TYPE; v_hiredate emp.hiredate%TYPE; BEGIN SELECT ename,sal,hiredate INTO v_name,v_salary,v_hiredate FROM emp WHERE empno=&empno; dbms_output.put_line('雇员名称:'||v_name); dbms_output.put_line('薪水:'||v_salary); dbms_output.put_line('入职时间:'||v_hiredate); END; --记录类型 --%ROWTYPE(变量的类型与表中整行记录完全相同) DECLARE emp_record emp%ROWTYPE; BEGIN SELECT * INTO emp_record FROM emp WHERE empno=&empno; dbms_output.put_line('雇员名称:'||emp_record.ename); dbms_output.put_line('薪水:'||emp_record.sal); dbms_output.put_line('入职时间:'||emp_record.hiredate); END; --自定义类型 DECLARE --类型的定义 TYPE emp_record_type IS RECORD( v_name emp.ename%TYPE, v_salary emp.sal%TYPE, v_hiredate emp.hiredate%TYPE ); --变量的声明 emp_record emp_record_type; BEGIN SELECT ename,sal,hiredate INTO emp_record FROM emp WHERE empno=&empno; dbms_output.put_line('雇员名称:'||emp_record.v_name); dbms_output.put_line('薪水:'||emp_record.v_salary); dbms_output.put_line('入职时间:'||emp_record.v_hiredate); EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output.put_line('该员工不存在'); END; --集合类型 --一维表 DECLARE TYPE empno_table_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; empno_table empno_table_type; TYPE dname_table_type IS TABLE OF dept.dname%TYPE INDEX BY BINARY_INTEGER; dname_table dname_table_type; BEGIN empno_table(1):=3; empno_table(2):=4; empno_table(200):=4; empno_table(-200):=4; dbms_output.put_line('1:'||empno_table(1)); dbms_output.put_line('2:'||empno_table(2)); dbms_output.put_line('200:'||empno_table(200)); dbms_output.put_line('-200:'||empno_table(-200)); SELECT dname INTO dname_table(-1) FROM dept WHERE deptno=&deptno; dbms_output.put_line('dname_table(-1):'||dname_table(-1)); END; --二维表 DECLARE TYPE dept_table_type IS TABLE OF dept%ROWTYPE INDEX BY BINARY_INTEGER; dept_table dept_table_type; BEGIN SELECT * INTO dept_table(10) FROM dept WHERE deptno=&deptno; dbms_output.put_line('dept_table(10).dname:'||dept_table(10).dname); dbms_output.put_line('dept_table(10).loc:'||dept_table(10).loc); dbms_output.put_line('dept_table(10).deptno:'||dept_table(10).deptno); END; --可变数组 DECLARE TYPE dept_varray_type IS VARRAY(10) OF dept.dname%TYPE NOT NULL; dept_varray dept_varray_type:=dept_varray_type('1','2','3','4','5'); BEGIN dbms_output.put_line('dept_varray(1):'||dept_varray(1)); SELECT dname INTO dept_varray(2) FROM dept WHERE deptno=20; dbms_output.put_line('dept_varray(2):'||dept_varray(2)); --集合里面常用的方法 dbms_output.put_line(dept_varray.count); dbms_output.put_line(dept_varray.limit); dbms_output.put_line(dept_varray.first); dbms_output.put_line(dept_varray.last); dbms_output.put_line(dept_varray.prior(2)); dbms_output.put_line(dept_varray.next(2)); END;
相关文章推荐
- Oracle(PL/SQL编程基础(PL/SQL程序块与PL/SQL语句)、异常、游标、数据类型)
- Oracle(PL/SQL编程基础(PL/SQL程序块与PL/SQL语句)、异常、游标、数据类型)
- oracle基础-基本的查询,以及pl/sql登录
- Oracle PL/SQL的程序结构以及基本数据变量类型
- Oracle 11g PL/SQL程序块,存储图片等BLOB字段类型的列PL/
- Oracle PL/SQL开发基础(第十六弹:记录类型)
- Oracle基本操作八:PL/SQL特殊数据类型%type %rowtype VARRAY TABLE RECORD
- oracle PL/SQL的基本构成,块结构和基本语法要求,数据类型,变量定义,运算符和函数
- 【传智播客郑州校区】Java,PL/SQL调用 ORACLE存储函数以及存储过程
- ORACLE 存储过程的创建以及ORA-06502:PL/SQL:数字或值错误的解决方法
- Oracle PL/SQL开发基础(第十七弹:集合类型)
- ORACLE PL/SQL基本语法 触发器 存储过程
- Java,PL/SQL调用 ORACLE存储函数以及存储过程
- Oracle PL/SQL开发基础(第二十一弹:基本函数)
- 【Oracle】PL/SQL——基本语法,记录类型和控制流程
- oracle PL/SQL的基本构成,块结构和基本语法要求,数据类型,变量定义,运算符和函数
- 在oracle的PL程序块中执行一个varchar2类型变量中的sql 语句
- oraclepl/sql语言基础
- Oracle基本数据类型存储格式浅析(五)——RAW类型
- Oracle基本数据类型存储格式浅析(二)——数字类型