1:hello xxx 今天是 当前日期
SQL> declare
2 d date:=sysdate;
3 a varchar2(10):='crq';
4 begin
5 dbms_output.put_line('hello'||' '|| a ||' '|| d);
6 end;
7 /
2:使用%type变量:
SQL> declare
2 name emp.ename%type;
3 salary emp.sal%type;
4 begin
5 select ename,sal into name,salary from emp where empno=12;
6 dbms_output.put_line(name);
7 dbms_output.put_line(salary);
8 end;
9 /
3:自定义类型记录性变量
SQL> set serveroutput on;
SQL> declare
2 type dd is record(
3 no number,
4 name varchar2(20),
5 salary number);
6 cd dd;
7 begin
8 select empno,ename,sal into cd from emp where empno=12;
9 dbms_output.put_line(cd.no);
10 dbms_output.put_line(cd.name);
11 dbms_output.put_line(cd.salary);
12 end;
13 /
4:%rowtype 变量
注意是select * 输出时可以挑选属性输出
SQL> declare ss emp%rowtype;
2 begin
3 select * into ss from emp where empno=12;
4 dbms_output.put_line(ss.ename);
5 dbms_output.put_line(ss.sal);
6 end;
7 /
crq
145
循环:
计算1+2+...+100;
1:for循环
SQL> declare
2 s number:=0;
3 begin
4 for i in 1..100
5 loop
6 s:=s+i;
7 end loop;
8 dbms_output.put_line(s);
9 end;
10 /
5050
SQL> declare
2 s number:=0;
3 i number:=1;
4 begin
5 loop
6 s:=s+i;
7 i:=i+1;
8 exit when(i>100);
9 end loop;
10 dbms_output.put_line(s);
11 end;
12 /
5050
while 打印出50以内能被3整除的数
SQL> set serveroutput on;
SQL> declare
2 i number:=1;
3 begin
4 while(i<=50) loop
5 if mod(i,3)=0
6 then
7 dbms_output.put_line(i);
8 end if;
9 i:=i+1;
10 end loop;
11 end;
12 /
利用for 循环计算并且输出数1!+2!+...+10!;
SQL> declare
2 s1 number:=1;
3 s2 number:=0;
4 begin
5 for i in 1..10 loop
6 for j in 1..i loop
7 s1:=s1*j;
8 end loop;
9 s2:=s2+s1;
10 s1:=1;
11 end loop;
12 dbms_output.put_line(s2);
13 end;
14 /
4037913
5:使用临时变量要求用户输入雇员号,利用if语句判断,岗位是否是‘CLERK’,如果是则将雇员工资提高1%
题目要求:使用临时变量(&d_no)要求用户输入部门号,根据输入的部门号,利用使用选择器的case判断:
若是10号部门,则将该部门雇员的补助(对应EMP表中的字段COMM)改为100;若是20号部门,则将该部门雇员的补助改为80;若是30号部门,则将该部门雇员的补助改为50,否则输出“不存在该部门!”
SQL> declare
2 v_no emp.deptno%type:='&e_no';
3 begin
4 case v_no
5 when 30 then update emp set comm=50 where deptno=v_no;
6 when 20 then update emp set comm=80 where deptno=v_no;
7 when 10 then update emp set comm=100 where deptno=v_no;
8 end case;
9 end;
10 /
输入 e_no 的值: 30
原值 2: v_no emp.deptno%type:='&e_no';
新值 2: v_no emp.deptno%type:='30';
PL/SQL 过程已成功完成。