PLsql


事例一

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;
/












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值