PL/SQL编程基础

这篇博客介绍了Oracle PL/SQL中的变量使用,包括系统日期、自定义类型记录性变量和%type变量。还展示了不同类型的循环结构,如for循环和while循环,并给出了计算阶乘的例子。此外,文章还涉及了条件判断,通过用户输入的部门号更新雇员补助,根据部门号执行不同的更新操作。
摘要由CSDN通过智能技术生成

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 过程已成功完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值