| 订阅 | 在线投稿
分享
 
 
 

用一个实例讲解Oracle数据库的PL/SQL语句块

2008-07-31 07:24:55 编辑來源:互联网 国际版 评论
 
 
  PL/SQL程序块以显示所给出雇员编号的雇员的详细信息

  1 SQL> Declare

  2 v_empno emp.empno%Type; /*声明变量v_empno,%type:使该变量的类型与emp表中的empno类型相同*/

  3 v_emprecord emp%Rowtype;/*声明变量v_emprecord,%rowtype:使该变量的类型与emp表中的整行相同*/

  4 Begin

  5 Select * Into v_emprecord From emp Where empno=&v_empno;

  6 dbms_output.put_line('雇员编号'||v_emprecord.empno);

  7 dbms_output.put_line('雇员姓名'||v_emprecord.ename);

  8 dbms_output.put_line('入职日期'||v_emprecord.hiredate);

  9 dbms_output.put_line('职位'||v_emprecord.job);

  10 dbms_output.put_line('管理员编号'||v_emprecord.mgr);

  11 dbms_output.put_line('工资'||v_emprecord.sal);

  12 dbms_output.put_line('奖金'||v_emprecord.comm);

  13 dbms_output.put_line('部门编号'||v_emprecord.deptno);

  14 End;

  if条件控制语句

  语法:

  1 if condition then statement;

  2 elsif condition then statement;

  3 else statement;

  4 end if;

  5/*condition 是一个布尔变量(值为true,false 或null,当表达式为true是执行then);statement是PL/SQL 或SQL 语句;*/

  通过if-then-elsif,按下列加薪比执行:(加薪的百分比是以他们现有的薪水为根据的)

  Deptno Raise(%age)

  10 5%

  20 10%

  30 15%

  40 20%

  1 SQL> Declare

  2 v_empno emp.empno%Type;

  3 v_emprecord emp%Rowtype;

  4 v_sal emp.sal%Type;

  5 Begin

  6 Select * Into v_emprecord From emp Where empno=&v_empno;

  7 If v_emprecord.empno='10' Then v_sal:=v_emprecord.sal*1.05;

  8 Elsif v_emprecord.empno='20' Then v_sal:=v_emprecord.sal*1.10;

  9 Elsif v_emprecord.empno='30' Then v_sal:=v_emprecord.sal*1.15;

  10 Elsif v_emprecord.empno='40' Then v_sal:=v_emprecord.sal*1.20;

  11 End If;

  12 End;

  for loop循环控制语句语法:

  1for counter in [reverse] lower_bower..upper_bound loop

  2statement1;

  3statement2;

  4

  5end loop;

  6/*counter 是一个隐式声明的整数,每次循环一次其自增1或自减1; reverse 将counter 从最大值每次减1至最小值; lower_bound 指定counter 变量变化范围的下届 upper_bound 指定counter 变量变化范围的上届*/

  利用for loop 循环控制语句实现向"emp"表添加10个新雇员编号;

  1 SQL> Declare

  2 v_empno emp.empno%Type;

  3 Begin

  4 Select Max(empno) Into v_empno From emp;

  5 For i In 1..10 Loop

  6 v_empno:=v_empno+1;

  7 Insert Into emp (empno) Values (v_empno);

  8 End Loop;

  9 End;
 
 
PL/SQL程序块以显示所给出雇员编号的雇员的详细信息 1 SQL> Declare 2 v_empno emp.empno%Type; /*声明变量v_empno,%type:使该变量的类型与emp表中的empno类型相同*/ 3 v_emprecord emp%Rowtype;/*声明变量v_emprecord,%rowtype:使该变量的类型与emp表中的整行相同*/ 4 Begin 5 Select * Into v_emprecord From emp Where empno=&v_empno; 6 dbms_output.put_line('雇员编号'||v_emprecord.empno); 7 dbms_output.put_line('雇员姓名'||v_emprecord.ename); 8 dbms_output.put_line('入职日期'||v_emprecord.hiredate); 9 dbms_output.put_line('职位'||v_emprecord.job); 10 dbms_output.put_line('管理员编号'||v_emprecord.mgr); 11 dbms_output.put_line('工资'||v_emprecord.sal); 12 dbms_output.put_line('奖金'||v_emprecord.comm); 13 dbms_output.put_line('部门编号'||v_emprecord.deptno); 14 End; if条件控制语句 语法: 1 if condition then statement; 2 elsif condition then statement; 3 else statement; 4 end if; 5/*condition 是一个布尔变量(值为true,false 或null,当表达式为true是执行then);statement是PL/SQL 或SQL 语句;*/ 通过if-then-elsif,按下列加薪比执行:(加薪的百分比是以他们现有的薪水为根据的) Deptno Raise(%age) 10 5% 20 10% 30 15% 40 20% 1 SQL> Declare 2 v_empno emp.empno%Type; 3 v_emprecord emp%Rowtype; 4 v_sal emp.sal%Type; 5 Begin 6 Select * Into v_emprecord From emp Where empno=&v_empno; 7 If v_emprecord.empno='10' Then v_sal:=v_emprecord.sal*1.05; 8 Elsif v_emprecord.empno='20' Then v_sal:=v_emprecord.sal*1.10; 9 Elsif v_emprecord.empno='30' Then v_sal:=v_emprecord.sal*1.15; 10 Elsif v_emprecord.empno='40' Then v_sal:=v_emprecord.sal*1.20; 11 End If; 12 End; for loop循环控制语句语法: 1for counter in [reverse] lower_bower..upper_bound loop 2statement1; 3statement2; 4 5end loop; 6/*counter 是一个隐式声明的整数,每次循环一次其自增1或自减1; reverse 将counter 从最大值每次减1至最小值; lower_bound 指定counter 变量变化范围的下届 upper_bound 指定counter 变量变化范围的上届*/ 利用for loop 循环控制语句实现向"emp"表添加10个新雇员编号; 1 SQL> Declare 2 v_empno emp.empno%Type; 3 Begin 4 Select Max(empno) Into v_empno From emp; 5 For i In 1..10 Loop 6 v_empno:=v_empno+1; 7 Insert Into emp (empno) Values (v_empno); 8 End Loop; 9 End;
󰈣󰈤
 
 
>>返回首页<<
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 
 热帖排行
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
©2005- 王朝网络 版权所有