设为首页 加入收藏

TOP

Oracle备忘录1(三)
2015-11-21 01:32:56 来源: 作者: 【 】 浏览:4
Tags:Oracle 备忘录
E; v_sal EMP.sal%TYPE; BEGIN --执行 --把test_cursor和一个SELECT结合 OPEN test_cursor FOR SELECT ename,sal FROM EMP WHERE deptno=&no; --循环取出 LOOP FETCH test_cursor INTO v_ename,v_sal; --判断工资高低,决定是否更新 --判断是否test_cursor是否为空 EXIT WHEN test_cursor%NOTFOUND; DBMS_OUTPUT.PUT_LINE('雇员名是:'||v_ename||',薪水'||v_sal); END LOOP; END; / --编写一个过程,输入雇员名,工资低于2000的雇员工资增加10% CREATE OR REPLACE PROCEDURE fj_pro6(fjname VARCHAR2) IS --定义 v_sal EMP.sal%TYPE; BEGIN --执行 SELECT sal INTO v_sal FROM EMP WHERE ename=fjname; --判断 IF v_sal<2000 THEN UPDATE EMP SET sal=sal*1.1 WHERE ename=fjname; END IF; END; / --调用 EXEC fj_pro6('SCOTT'); --雇员如果补助为零则加200,如果不为零则加100 CREATE OR REPLACE PROCEDURE fj_pro7(fjname VARCHAR2) IS --定义 v_comm EMP.comm%TYPE; BEGIN --执行 SELECT comm INTO v_comm FROM EMP WHERE ename=fjname; --判断 IF v_comm<>0 THEN UPDATE EMP SET comm=comm+100 WHERE ename=fjname; ELSE UPDATE EMP SET comm=comm+200 WHERE ename=fjname; END IF; END; / --调用 EXEC fj_pro7('SCOTT'); --三个条件分支 IF-THEN-ELSEIF-ELSE --输入雇员编号,如果该雇员的职位是PRESIDENT就给他的工资增加1000,如果该雇员的职位是MANAGER就给他的工资增加500,其它职位的雇员工资增加200。 CREATE OR REPLACE PROCEDURE fj_pro8(fjno NUMBER) IS --定义 v_job EMP.job%TYPE; BEGIN --执行 SELECT job INTO v_job FROM EMP WHERE EMPno=fjno; IF v_job='PRESIDENT' THEN UPDATE EMP SET sal=sal+1000 WHERE EMPno=fjno; ELSIF v_job='MANAGER' THEN UPDATE EMP SET sal=sal+500 WHERE EMPno=fjno; ELSE UPDATE EMP SET sal=sal+200 WHERE EMPno=fjno; END IF; END; / --调用 EXEC fj_pro8(7839); --循环语句 LOOP --users表中,用户编号从1开始增加 CREATE TABLE users( userno NUMBER, username VARCHAR2(40) ); CREATE OR REPLACE PROCEDURE fj_pro9(fjname VARCHAR2) IS --定义:=表示赋值 v_num NUMBER:=1; BEGIN LOOP INSERT INTO users VALUES(v_num,fjname); --判断退出条件 EXIT WHEN v_num=10; --自增 v_num:=v_num+1; END LOOP; END; / --调用 EXEC fj_pro9('root1'); --这样表中会有十个username为root1的元组 CREATE OR REPLACE PROCEDURE fj_pro10(fjname VARCHAR2) IS --定义:=表示赋值 v_num NUMBER:=11; BEGIN WHILE v_num<=20 LOOP INSERT INTO users VALUES(v_num,fjname); v_num:=v_num+1; END LOOP; END; / --调用 EXEC fj_pro10('root1');
首页 上一页 1 2 3 4 5 下一页 尾页 3/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇关于Oracle实时数据库的优化思路 下一篇ORACLE逻辑备份与恢复

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: