--问题:给员工涨工资,总裁涨1000,经理800 其他400
SQL> /*
SQL> Java:
SQL> public void sayHello(){
SQL> System.out.println("Hello World");
SQL> }
SQL> */
SQL> --利用PLSQL打印Hello World
SQL> declare
2 --变量说明
3 begin
4 --程序体
5 dbms_output.put_line('Hello World');
6 end;
7 /
PL/SQL 过程已成功完成。
SQL> --打开屏幕输出开关
SQL> set serveroutput on
SQL> /
Hello World
PL/SQL 过程已成功完成。
引用型变量
DECLARE
--定义引用型变量
PENAME EMP.ENAME%TYPE;
PSAL EMP.SAL%TYPE;
BEGIN
SELECT ENAME, SAL INTO PENAME, PSAL FROM EMP WHERE EMPNO = 7839;
DBMS_OUTPUT.PUT_LINE(PENAME || '的薪水是' || PSAL);
END;
记录型变量
-- yang 创建于 2014/3/12
DECLARE
--定义记录型变量:代表一行
EMP_REC EMP%ROWTYPE;
BEGIN
-- 给记录型变量赋值
SELECT * INTO EMP_REC FROM EMP WHERE EMPNO = 7839;
--输出
DBMS_OUTPUT.PUT_LINE(EMP_REC.ENAME || '的薪水是' || EMP_REC.SAL ||
' 奖金是' ||NVL(EMP_REC.COMM, 0));
END;
/* if语句
判断用户输入的数据
*/
--PL\SQL 接收键盘输入
--接收键盘输入
--Oracle SQL developer
--accept num prompt '请输入一个数字';
DECLARE
--定义一个变量 保存键盘输入
pnum NUMBER :=#
BEGIN
--判断
IF pnum =0 THEN dbms_output.put_line('你输入的是'||pnum);
Elsif pnum =1 THEN dbms_output.put_line('你输入的是'||pnum);
ELSIF pnum =2THEN dbms_output.put_line('你输入的是'||pnum);
ELSE dbms_output.put_line('你输入的是无效数字');
END IF;
END;
/*
循环 :打印1~10
*/
DECLARE
pnum NUMBER :=1;
BEGIN
LOOP
--退出的条件
EXIT WHEN pnum>10;
--打印
dbms_output.put_line(pnum);
--自增
pnum :=pnum+1;
END LOOP;
END;
/*
使用光标 查询员工的姓名和工资,并打印
注意的问题:
1.先打开,后使用,最后关闭
2.如果不close 光标;内存泄露 too many opened cursor(Error)
*/
DECLARE
-- 定义光标
CURSOR CEMP IS SELECT ENAME, SAL FROM EMP;
--为该光标定义变量
PNAME EMP.ENAME%TYPE;
PSAL EMP.SAL%TYPE;
BEGIN
--打开光标
OPEN CEMP;
LOOP
--从光标中取值
FETCH CEMP INTO PNAME, PSAL;
--退出条件
EXIT WHEN CEMP%NOTFOUND;
--输出
DBMS_OUTPUT.PUT_LINE(PNAME || '的薪水是' || PSAL);
END LOOP;
--关闭光标
CLOSE CEMP;
END;
/*按员工的工种 涨工资。总裁涨1000,经理涨800,普通员工涨400*/
DECLARE
--代表员工的编号和工种
CURSOR CSAL IS
SELECT EMPNO, JOB FROM EMP;
--为光标定义变量
CJOB EMP.JOB%TYPE;
CNO EMP.EMPNO%TYPE;
BEGIN
OPEN CSAL;
LOOP
--取出一个员工
FETCH CSAL
INTO CNO, CJOB;
EXIT WHEN CSAL %NOTFOUND;
IF CJOB = 'PRESIDENT' THEN
UPDATE EMP SET SAL = SAL + 1000 WHERE EMPNO = CNO;
ELSIF CJOB = 'manager' THEN
UPDATE EMP SET SAL = SAL + 800 WHERE EMPNO = CNO;
ELSE
UPDATE EMP SET SAL = SAL + 400 WHERE EMPNO = CNO;
END IF;
END LOOP;
CLOSE CSAL;
COMMIT;
DBMS_OUTPUT.PUT_LINE('完成!!');
END;