ORACLE的pl/sql编程和变量

PL/SQL是Oracle数据库对SQL的扩展,增加了过程处理语句如分支和循环。它结合了SQL的数据操纵能力和过程语言的数据处理能力。文章通过示例介绍了如何声明和赋值变量,进行数学运算,以及处理异常。还展示了如何利用SELECTINTO从表中获取数据并进行计算,同时强调了当查询结果不是单条记录时可能出现的错误。
摘要由CSDN通过智能技术生成

        PL/SQL(Procedure Language/SQL)是 Oracle 对 sql 语言的过程化扩展,指 在 SQL 命令语言中增加了过程处理语句(如分支、循环等),使 SQL 语言具有 过程处理能力。把 SQL 语言的数据操纵能力与过程语言的数据处理能力结合起 来,使得 PLSQL 面向过程但比过程语言简单、高效、灵活和实用。 

        也就是说加入了类似简单的筛选功能,

基本语法结构

declare  --声明变量


begin  --代码逻辑


exception --异常处理

end;  --封号在这是必须的

eg:

需求: 声明变量水费单价、水费字数、吨数、金额。 对水费单价、字数、进行赋值 。吨数根据水费字数换算,规则为水费字数除以 1000,并且四舍五入,保留两位小数。计算金额,金额=单价*吨数。 输出单价 、数量和金额。

--变量的用法--
declare

v_price number(10,2);  --水费单价 (10,2)精度是10,规定小数点后2位
v_usenum number;       --水费字数
v_usenum2 number(10,2); --吨数 
v_money number(10,2);   --金额

begin 

v_price:= 2.45;        --赋值语句,(:=赋值符号)水费单价
v_usenum:= 345;        --字数
v_usenum2:=round(v_usenum/1000,2);--字数换算为吨数 round四舍五入 精度为小数点后2位
v_money:=v_price * v_usenum;      --计算金额
dbms_output.put_line('金额:'||v_money);--输出语句 put_line是存储包 解释文字后要加入管道符号连接

end;

select into 赋值

 declare
 v_price number(10,2);--单价
 v_usenum number;--水费字数
 v_num0 number;--上月字数
 v_num1 number;--本月字数
 v_usenum2 number(10,2);--使用吨数
 v_money number(10,2);--水费金额
begin
 --对单价进行赋值
 v_price:=3.45;
 --变量赋值
 select usenum,num0,num1 into v_usenum,V_num0,V_num1 from
T_ACCOUNT 
 where year='2012' and month='01' and owneruuid=1;
 
 v_usenum2:= round(v_usenum/1000,2);
 v_money:=v_price*v_usenum2;
 DBMS_OUTPUT.put_line('单价:'||v_price||'吨数:'
 ||v_usenum2||'金额:'||v_money||'上月字数:'||v_num0||'本月
字数'||v_num1);
end;

 将字数赋值更改为查询,

但是输出时发生了

 这是因为结果必须是一条记录 ,有多条记录和没有记录都会报错

这里就是有一条表没有插入数据

如果定义的表的某条属性害怕定义的类型与原表的属性类型不一样那么就可以使用引用型

格式为 表明.列名%type

 v_usenum T_ACCOUNT.USENUM%TYPE;

另一种为记录型,从数据库中提取多个属性时,可以使用记录型来替代。

语法 表名%rowtype

 v_account T_ACCOUNT%ROWTYPE;-select * into v_account from T_ACCOUNT -记录型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值