PLSQL 基础语法(一)

变量声明与赋值

语法结构

sql 复制代码
[delare
     -- 申明变量
 ]
 begin
     -- 代码逻辑
 [exception
     -- 异常处理
 ]
end;

案例演示

需求

  1. 声明变量水费单价、水费字数、吨数、金额

  2. 对水费单价、字数、进行赋值。吨数根据水费字数换算,规则为水费字数除以1000,并且四舍五入,保留两位小数。计算金额,金额单价*吨数

  3. 输出单价、数量和金额

语句

sql 复制代码
declare
  v_price number(10,2); --单价
  v_usenum number; --水费字数
  v_usenum2 number; --吨数
  v_money number(10,2); --金额
begin
  v_price:=2.45; --单价赋值
  v_usenum:=9123; --水费字数
  v_usenum2:=round(v_usenum/1000,2);--吨数
  v_money:=v_price*v_usenum2;--金额
  
  DBMS_OUTPUT.put_line('金额:'||v_money);
end;

变量select into 赋值

语法结构

csharp 复制代码
select 列名 into 变量名 from 表名 where 条件

注: 结果必须是一条数据,有多条和没有数据都会报错

案例演示

需求

查询id为100的员工月薪资

语句

sql 复制代码
declare 
  e_salary number(10,2); --月工资
begin
  select salary into e_salary from employees
  where employee_id = 100;   
  DBMS_OUTPUT.put_line('工资:'||e_salary);
end;

属性类型

引用型

记录型

相关异常处理

种类

  1. NO_DATA_FOUND:使用 select into 未返回行
  2. TOO_MANY_ROWS:执行 select into 时,结果集超过一行

语法结构

csharp 复制代码
exception
    when 异常类型 then
        异常处理逻辑

演示一

sql 复制代码
-- 异常处理
declare 
  employee employees%rowtype;
begin
  select * into employee from employees where employee_id = 12345;   
  DBMS_OUTPUT.put_line('工资:'||employee.salary);
exception
  when no_data_found then
     DBMS_OUTPUT.put_line('没有找到该用户');
end;

演示二

sql 复制代码
-- 异常处理
declare 
  employee employees%rowtype;
begin
  select * into employee from employees ;   
  DBMS_OUTPUT.put_line('工资:'||employee.salary);
exception
  when no_data_found then
     DBMS_OUTPUT.put_line('没有找到该用户');
 when too_many_rows then
     DBMS_OUTPUT.put_line('存在多条符合条件的数据');
end;
相关推荐
Python编程学习圈17 分钟前
Asciinema - 终端日志记录神器,开发者的福音
后端
bing.shao20 分钟前
Golang 高并发秒杀系统踩坑
开发语言·后端·golang
壹方秘境22 分钟前
一款方便Java开发者在IDEA中抓包分析调试接口的插件
后端
brzhang1 小时前
A2UI:但 Google 把它写成协议后,模型和交互的最后一公里被彻底补全
前端·后端·架构
开心猴爷1 小时前
iOS App 性能测试中常被忽略的运行期问题
后端
SHERlocked932 小时前
摄像头 RTSP 流视频多路实时监控解决方案实践
c++·后端·音视频开发
AutoMQ2 小时前
How does AutoMQ implement a sub-10ms latency Diskless Kafka?
后端·架构
Rover.x2 小时前
Netty基于SpringBoot实现WebSocket
spring boot·后端·websocket
疯狂的程序猴2 小时前
用 HBuilder 上架 iOS 应用时如何管理Bundle ID、证书与描述文件
后端
ShaneD7713 小时前
Redis 实战:从零手写分布式锁(误删问题与 Lua 脚本优化)
后端