事例一
helloworld.sql
set serveroutput on
declare
--说明部分
begin
--程序体
dbms_output.put_line('Hello World');
end;
/
引用型变量.sql
--查询并打印7839的姓名和薪水
set serveroutput on
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;
/
记录型变量.sql
--查询并打印7839的姓名和薪水
set serveroutput on
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);
end;
/
if语句.sql
--判断用户输入的数字
set serveroutput on
--接受键盘输入
--num: 是一个地址值,在该地址上,保存了输入的值
accept num prompt '请输入一个数字';
declare
--定义数字保存键盘输入的值
pnum number := #
begin
if pnum = 0 then dbms_output.put_Line('您输入的是0');
elsif pnum = 1 then dbms_output.put_Line('您输入的是1');
elsif pnum = 2 then dbms_output.put_Line('您输入的是2');
else dbms_output.put_Line('其他数字');
end if;
end;
/
循环.sql
--打印1~10
set serveroutput on
declare
pnum number := 1;
begin
loop
--退出条件
exit when pnum>10;
dbms_output.put_line(pnum);
--加一
pnum := pnum + 1;
end loop;
end;
/
涨工资问题.sql
--给员工涨工资,总裁1000 经理800 其他400
set serveroutput on
declare
cursor cemp is select empno,empjob from emp;
pempno emp.empno%type;
pjob emp.empjob%type;
begin
rollback;
open cemp;
loop
--取一条记录
fetch cemp into pempno,pjob;
exit when cemp%notfound;
--判断
if pjob = 'PRESIDENT' then update emp set sal=sal+1000 where empno=pempno;
elsif pjob = 'MANAGER' then update emp set sal=sal+800 where empno=pempno;
else update emp set sal=sal+400 where empno=pempno;
end if;
end loop;
close cemp;
--为什么? --> 事务ACID
commit;
dbms_output.put_line('涨工资完成');
end;
/