目录:
变量的使用
%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”。