数据库之【PL SQL块 与 控制结构举例】
来源:互联网 发布:网络词爸爸是什么意思 编辑:程序博客网 时间:2024/04/19 16:40
*********************************************
数据库之【PL SQL块 与 控制结构举例】
*********************************************
--1.块示例DECLARE empno NUMBER(5);BEGIN SELECT empno INTO empno FROM emp WHERE ename = 'SMITH' FOR UPDATE OF deptno; IF empno > 0 THEN UPDATE emp SET deptno = 40 WHERE ename = 'SMITH'; END IF; COMMIT; --用到行级锁,一定要提交EXCEPTION /* 异常处理语句 */ WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('出错:' || SQLERRM);END;--2.变量与常量--常量与变量定义与赋值num constant number default 30;num constant number :=30;selelct sal into num from emp where empno=7369;DECLARE icode VARCHAR2(6); p_catg VARCHAR2(20); p_rate NUMBER; c_rate CONSTANT NUMBER := 0.10;BEGIN ... icode := 'i205'; SELECT p_category, itemrate * c_rate INTO p_catg, p_rate FROM itemfile WHERE itemcode = icode; ...END;
--动态SQLDECLARE sql_stmt VARCHAR2(200); emp_id NUMBER(4) := 7566; emp_rec emp%ROWTYPE;BEGIN EXECUTE IMMEDIATE 'CREATE TABLE bonus1 (id NUMBER, amt NUMBER)'; sql_stmt := 'SELECT * FROM emp WHERE empno = :id'; EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id; dbms_output.put_line(emp_rec.ename);END;
--控制结构举例--打印服务设置set serveroutput on;--条件IFDECLARE e_mpno NUMBER; d_eptno NUMBER;BEGIN e_mpno := 7369; SELECT deptno INTO d_eptno FROM emp WHERE empno = e_mpno; IF d_eptno = 30 THEN UPDATE emp SET sal = sal + 100 WHERE empno = e_mpno; ELSE UPDATE emp SET sal = sal + 50 WHERE empno = e_mpno; END IF; DBMS_OUTPUT.PUT_LINE('deptno=' || d_eptno);END;/DECLARE text varchar2(200);begin text := '&text'; if upper(text) = 'A' then dbms_output.put_line('优秀'); elsif upper(text) = 'B' then dbms_output.put_line('良好'); elsif upper(text) = 'C' then dbms_output.put_line('一般'); elsif upper(text) = 'D' then dbms_output.put_line('差'); else dbms_output.put_line('请输入正确成绩'); end if;end;/--选择条件子查询select e.*,(case when e.sal<1000 then '低' else '高' end) "级别" from emp e;--循环控件--LOOP循环declare i number := 1; j number := 1;begin loop exit when i > 10; loop exit when j > i; dbms_output.put('*'); j := j + 1; end loop; dbms_output.new_line(); j := 1; i := i + 1; end loop;end;--WHILE循环declare i number := 1; j number := 1;begin while i < 10 loop while j < i loop dbms_output.put('*'); j := j + 1; end loop; dbms_output.new_line(); j := 1; i := i + 1; end loop;end;--FOR循环declare i number; j number;begin --反转在IN后面写reverse关键字 for i in 1 .. 9 loop for j in 1 .. i loop dbms_output.put('*'); end loop; dbms_output.new_line; end loop;end;--顺序控件DECLARE qtyhand itemfile.qty_hand%type; relevel itemfile.re_level%type;BEGIN SELECT qty_hand, re_level INTO qtyhand, relevel FROM itemfile WHERE itemcode = 'i201'; IF qtyhand < relevel THEN GOTO updation; ELSE GOTO quit; END IF; <<updation>> UPDATE itemfile SET qty_hand = qty_hand + re_level WHERE itemcode = 'i201'; <<quit>> NULL;END;
- 数据库之【PL SQL块 与 控制结构举例】
- Oracle数据库学习9之PL/SQL控制结构
- PL/SQL块结构
- PL/SQL块结构
- PL/SQL块结构
- PL/SQL块结构
- PL/SQL 控制结构
- PL/SQL控制结构
- PL/SQL控制结构
- PL/SQL知识总结(1):PL/SQL块结构和流程控制语句
- PL/SQL的块结构
- pl/sql 块和结构
- pl/sql之基本概念和块的结构
- pl/sql之基本概念和块的结构
- PL/SQL教程之二:块结构和组成元素
- PL/SQL之二-块结构和组成元素
- pl/sql之控制结构(分支,循环,控制)
- pl/sql之控制结构(分支,循环,控制)
- 学习正则表达式(2012-4-11)
- 运算器的发展
- 聊天随想
- spoj 145 Aliens(增量法+最小包围圈)
- 网页演示注意事项2012410
- 数据库之【PL SQL块 与 控制结构举例】
- 一个有意思的C++问题,应该是面试题吧。
- 微创新
- 【Android 安卓】腾讯推出安卓4.0 ROM:Tita
- 使用trac进行项目管理
- 设置文件的访问权限
- Fedora16为grub2添加、修改背景图片和字体颜色
- java面试题
- libevent源码学习_结构体