PL/SQL学习总结(1)

PL/SQL是一种面向过程的类似Pascal的语言,是Oracle公司对SQL语言的功能的扩展,它是将过程性结构与oracle SQL无缝的集成在一起而产生的一种结构化的强有力的语言,是一种高级数据库程序设计语言。
1、程序开始
一个完整的程序体
if判断

declare      --声明变量 变量名 类型
    a number:=5 ; --声明时赋值 
    b number:=2;
    c number;
    --在plsql中可以使用SQL里面的类型以保证类型一致
    -- user_name user.user_name%type;--该变量与数据库user表中user_name字段属性一致
    begin    ---- 程序开始
    if a>0 and b>0 then  -- if条件
    c:=a+b;   --赋值操作使用:=
    elsif a<0 and b>0 then    
    c:=a*b;
    else 
    c:=a-b;
        dbms_output.pput_line(c) ; --控制台输出
end if;---一定要end if
    exception when others then --异常的捕获
    dbms_output.pput_line('error') ;
end;

2、循环控制语句

declare
 a number;
 begin
 for i in 1..3 loop
dbms_output.pput_line(i) ;
 end loop;--end loop 不能少
exception when others then
dbms_output.pput_line('error') ;
end;

输出结果
这里写图片描述

因为plsql是一门增强的SQL语言,所以,plsql可以直接用for循环遍历SQL语句查询出来的结果(遍历游标)

declare 

 begin
for emp in (select * from employees e where e.employee_id<110) loop
dbms_output.put_line('id:  '||emp.employee_id||'fname:  '||emp.first_name) ;
end loop;
exception when others then
dbms_output.pput_line('error') ;
end

结果如下:
这里写图片描述

3、plsql中数组的定义
在plsql中并没有严格的数组这个定义,我们可以将数组理解成为一个表,每条记录相当于数组的一行,多少条记录就有多少行,在plsql中有两种类型,table和record,table只能装一列,而record只能装一行多列,实现数组可以在table里面装record,两者结合就是一个数组

--这里以hr下的employees表为例

declare 
ind number:=1;
type type_record is record(
ename employees.first_name%type,
eemail employees.email%type,
esalary employees.salary%type
);     ---到这里就定义出了一条记录类型,三个字段分别是ename,eemail,esalary;
my_record  type_record; --这个地方是声明一个my_record变量是_record 类型
type type_table is table of type_record index by binary_integer;
--定义一个table类型,该类型里面只能存储_record类型的记录 ,int索引
my_table  type_table;--声明my_table变量为_table类型;
begin
for emp in(select   e.first_name,e.email,e.salary
from employees e where e.employee_id <110) loop
--为记录赋值
my_record.ename:=emp.first_name;
my_record.eemail:=emp.email;
my_record.esalary:=emp.salary;
--将记录存到table里面
my_table(ind):=my_record;
ind:=ind+1;
end loop;------------------循环存数据
---------------循环输出数据
for i in 1..my_table.count loop
 dbms_output.put_line('employee_name:    ' || my_table(i).ename || ' ' || 'email:     ' || 
 my_table(i).eemail || 'salary:     ' || my_table(i).esalary );
end loop;
exception when others then 
dbms_output.put_line('error');
end;

输出结果如下
这里写图片描述

嗯。。暂时就先想到这么多,后面的想到了再写 。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值