时间过得好快 ,快三月没写简书了 今天来练练手
PL/SQL块结构:
declare —声明部分,可选
声明所用到的变量,常量和游标 在这个SQL块中声明的这些只能在这个块中使用,其他的SQL块是不能够参与调用的,
begin — 执行部分,必选
select 定义好的变量名 into 所在表中的指定的列 from 表 where 过滤条件
////******** 使用 select into 语句 用于表示将从数据库中的哪一张表中哪些指定的列选择出来存放在事先定义好的变量中去
if then
endif
end;
exception — 异常处理 可选
when ............then
when..............then
end;
简单小李子:
SQL>set serveroutput on//必须打开服务端
SQL>declare
a int :=100;
b int :=200;
c number;
begin
c:(a+b)/(a-b);
dbms_output.put_line(c);
excpetion
when zero_divide then
dbms_output.put_line(divider don't for zero);
end;
注释: 单行注释 -- while 多行注释 /* 需注释的代码*/ 和Java得注释一样
数据类型与定义变量与常量
1.基本数据类型
1.1 数值类型 number
1.2字符类型 char varchar
1.3 日期类型 date
1.4 boolean 类型 T F N 三种返回值
2.特殊数据类型
2.1% TYPE类型
使用该关键字可以声明一个与指定列名称相同的数据类型,通常紧跟在指定列后面。
eg: 声明一个emp中job列的数据类型完全相同的var-job
declare
var-job emp.job %type
好处2个点:1.用户不必查看表中数据的各个数据类型,就可以确定所定义的变量能够存储检索的数据。2.如果对表中已有列的数据类型进行修改,则用户不必考虑对已定义的变量所使用的数据类项进行修改,因为%type 可以自动进行变量上的调整。
2.2 record 类型 或者叫记录类型 与Java中的类有相似的地方
eg:
type record_type is record
(
var-m1 data_type ;
var-m2 data_type ;
var-m3 data_type ;
var-m4 data_type ;
var-m5 data_type ;
)
举个栗子:
set serveroutput on // 必须打开服务 不然下面没法执行
declare
type emp_type is recode
(
var_ename varchar2(20),
var_job varchar2(20),
var_sal varchar2(20)
);
empinfo emp_type; // 定义变量 empinfo 类型时记录形,对这个变量操作可以对以上三个成员变量操作 ,减少编程的复杂度和代码的冗余度。[感觉像是C语言中的结构体更合适点吧]
begin
select ename ,job,sal into from empinfo from emp where empmo=9527;
dbms_output.put_line(empinfo.var_name||empionfo.var_job||empinfo.var_sal);
end;
3.%rowtype
语法格式:
row var_name table_name%rowtype
rowvar_name :表示可以存贮一行数据的变量名 注意 这是一行数据
table_name :指定的表名。
eg:
set serveroutput on
declare
rowvar_emp emp %rowtype
begin select * into rowvar-emp from emp where empno =9527;
dbms_output.put_line(empinfo.var_name||empionfo.var_job||empinfo.var_sal);
end;
\
定变量和常量
1.定义变量
<变量名><类型>[长度:=初始值]
eg:name varchar2(50):=‘克里斯多夫司机’;
定义常量
<常量名>constant<数据类型>:=<常数值>
eg:months constant intrger:=12;
流程控制语句
1选择语句
2循环语句