ORACLE day05

目录:
变量的使用
%type类型
记录类型
%rowtype类型
表类型
if语句
goto语句
1变量的使用
1.1问题
定义两个变量:分别和s_emp表中id的类型和first_name的类型相同,并且把id = 1的数据赋值给这两个变量。打印输出这两个变量的值。

1.2步骤
代码如下所示

宣布
    var_id      号(7 );
    var_name    varchar2 (25 ); 
开始
    var_id := 1 ;
    var_name := '卡门' ;
    dbms_output 。put_line ( var_id || ':' || var_name ); 
结束;    

首先在declare申明区,声明两个变量var_id和var_name,以便与s_emp表中id的类型和first_name的类型相同所以先去查看s_emp表中id的类型和first_name的类型。

然后在开始执行区,给两个变量复制,为了把id = 1的数据赋值给这两个变量打印输出这两个变量的值,所以需要先去查看s_emp表中id的值和first_name的值,并赋值给var_id和var_name。

最后使用dbms_output.put_line将两个变量拆分打印输出。

2%type类型
2.1问题
使用表名。随机名%type取得表的细分对应的类型

使用sql语句对变量进行赋值。

2.2步骤
代码如下所示

宣布
    var_id s_emp 。id %类型;
    var_name s_emp 。first_name %类型; 
开始
    选择id , first_name到var_id , var_name  
        从s_emp其中id = 2 ;
    dbms_output 。put_line ( var_id || ':' || var_name ); 
结束;    

首先在声明申明区,声明两个变量var_id和var_name,以便与s_emp表中id的类型和first_name的类型相同,所以使用s_emp.id%type获得s_emp表中id的类型,使用s_emp.first_name%type获得s_emp表中first_name的类型

然后在begin执行区,使用查询语句将s_emp中id = 2的id和first_name数据赋值给变量var_id和var_name。

最后使用dbms_output.put_line将两个变量拆分打印输出。

3条记录类型
3.1问题
定义一个记录类型有三个分区分别是id first_name薪水和s_emp表中对应的分区类型相同把id = 2的数据赋值给这个类型的变量。

3.2步骤
代码如下所示

宣布
    类型emptype是   record (
        id s_emp 。id %类型,
        first_name   varchar2 (25 ),
        工资s_emp 。工资%类型             
    );
    var_emp emptype ;   
    var_emp1 emptype ;     
开始
    / *如何id = 2的数据赋值给var_emp * /
    选择id , first_name ,薪金成var_emp  
        从s_emp其中id = 2 ;  
    - var_emp1 := var_emp ;
    var_emp1 。如first_name := var_emp 。first_name ;  
    dbms_output 。PUT_LINE ( var_emp1 。 ID || ':' || var_emp1 。 FIRST_NAME
       || ':' || var_emp1 。工资);  
结束;

上述代码中,以下代码

    类型emptype是   record (
        id s_emp 。id %类型,
        first_name   varchar2 (25 ),
        工资s_emp 。工资%类型             
    );

定义一个记录类型。

上述代码中,以下代码

var_emp emptype ;
var_emp1 emptype ;
使用记录类型定义变量

选择id , first_name ,薪金成var_emp
从s_emp其中id = 2 ;
使用查询语句将id为2的数据存入到var_emp中。

  • var_emp1 := var_emp ;
    var_emp1 。如first_name := var_emp 。first_name ;
    让var_emp1等于var_emp。

让var_emp1中的first_name的值等于var_emp中的first_name的值

dbms_output 。PUT_LINE ( var_emp1 。 ID || ‘:’ || var_emp1 。 FIRST_NAME
|| ‘:’ || var_emp1 。工资);
最后使用dbms_output.put_line将var_emp1中的三个细分打印输出。

4%rowtype类型
4.1问题
使用rowtype定义一个变量把s_dept中id = 50的信息放入此变量中并输出该变量的信息。

4.2步骤
代码如下所示

宣布
    var_dept s_dept %行类型;
开始
    选择*   放入var_dept
    从s_dept,其中id = 50 ;
    dbms_output 。PUT_LINE ( var_dept 。 ID || ':' ||
    var_dept 。名称);
结束; 

首先在declare申明区,使用行类型定义一个s_dept的变量var_dept

然后在begin执行区,使用查询语句将d_empt中id = 50的所有数据赋值给变量var_dept中。

最后使用dbms_output.put_line将var_dept中的id和名称拼接输出打印。

5桌
5.1问题
定义表类型的变量把s_emp表中id = 1和id = 3和id = 11的所有信息放入这个变量,然后使用转换器思想遍历数据打印这些信息的id first_name工资。

5.2步骤
代码如下所示

宣布
      类型empstype是s_emp %行类型的表
      由binary_integer索引;
      var_emps empstype ;
      var_id s_emp 。id % type := 1 ;
      var_ind binary_integer ; 
  开始

从s_emp 选择到var_emps ( var_id )中
其中id = var_id ;
var_id := 3 ;
从s_emp 选择
到var_emps ( var_id )中
其中id = var_id ;
var_id := 11 ;
从s_emp 选择*到var_emps ( var_id )中
其中id = var_id ;
var_ind := var_emps 。第一();
dbms_output 。put_line (var_emps ( var_ind )。
ID || ‘:’ || var_emps ( var_ind )。工资);
var_ind := var_emps 。下一个( var_ind );
dbms_output 。put_line (var_emps ( var_ind )
。ID || ‘:’ || var_emps ( var_ind )。工资);
var_ind := var_emps 。下一个( var_ind );
dbms_output 。put_line (var_emps ( var_ind )。
ID || ‘:’ || var_emps ( var_ind )。工资);
结束;
上述代码中,一下代码:

类型empstype是s_emp %行类型的表
由binary_integer索引;
var_emps empstype ;
var_id s_emp 。id % type := 1 ;
var_ind binary_integer ;
首先在declare申明区,定义表类型变量var_id初始化为1

从s_emp 选择到var_emps ( var_id )中
其中id = var_id ;
var_id := 3 ;
从s_emp 选择
到var_emps ( var_id )中
其中id = var_id ;
var_id := 11 ;
从s_emp 选择*到var_emps ( var_id )中
其中id = var_id ;
然后在begin执行区,使用查询语句将s_emp中id = 1,id = 3,id = 11的

的所有数据赋值给变量var_emps中。

var_ind := var_emps 。第一();
dbms_output 。put_line (var_emps ( var_ind )。
ID || ‘:’ || var_emps ( var_ind )。工资);
var_ind := var_emps 。下一个( var_ind );
dbms_output 。put_line (var_emps ( var_ind )
。ID || ‘:’ || var_emps ( var_ind )。工资);
var_ind := var_emps 。下一个( var_ind );
dbms_output 。put_line (var_emps ( var_ind )
。ID || ‘:’ || var_emps ( var_ind )。工资);
最终使用重组器思想访问表类型的下标,使用dbms_output.put_line将var_emps中的id first_name工资分配输出打印。

6 if语句
6.1问题
定义三个整体变量赋值输出其中的替代。

6.2步骤
代码如下所示

宣布
    var_a数字;
    var_b号;
    var_c号;
开始
    var_a :=& var_a ;
    var_b :=& var_b ;
    var_c :=& var_c ; 
    如果   var_a < var_b然后
        如果 var_b < var_c那么
            dbms_output 。put_line ( var_c ); 
        其他
            dbms_output 。put_line ( var_b ); 

如果 结束;
其他
如果 var_a < var_c然后
dbms_output 。put_line ( var_c );
其他
dbms_output 。put_line ( var_a );
如果 结束;
如果 结束;
结束;
首先在declare申明区,声明三个数字变量,用于保存三个要比较的数

然后在begin执行区,让用户输入三个数保存到三个变量中,使用if语句判断三个数的大小。

最后使用dbms_output.put_line将三个数中最大的那个数打印输出。

7 goto语句
7.1问题
使用goto结合标签做一个输出1到10的效果。

7.2步骤
代码如下所示:

宣布
    var_i number := 1 ;
开始
    << abc >>
    如果   var_i < 11然后
        dbms_output 。put_line ( var_i );
        var_i := var_i +1 ;
        转到 abc ; 

如果 结束;
dbms_output 。put_line (‘loop over!’ );
结束;
首先在declare申明区,声明一个数字变量并初始化为1。控制循环次数

然后在begin执行区,用if语句判断var_i是否小于11,如果小于11就使用dbms_output.put_line将var_i打印输出,并加1。遇见goto语句,跳到标签<< abc >>处,重新来过,如果大于等于11就结束判断语句,使用dbms_output.put_line打印输出“ loop over”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值