文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Oracle学习(六) --- PL/SQL(一) 赋值、类型、异常、if、循环

2021-12-23 01:17

关注

Oracle学习(六) --- PL/SQL(一) 赋值、类型、异常、if、循环

概述:

PL/SQL(Procedural Language/SQL)是一种 Oracle数据库特有的、支持应用开发的语言,是Oracle在标准SQL语言上进行过程性扩展后形成的程序设计语言。

1、语法

-- 基本语法,(declare、exception可省略)
declare
   -- 声明,定义变量
begin
   -- 代码
   exception
     --异常处理
end;
declare
 i varchar2(20);
begin
  i := "你好";
  dbms_output.put_line("输出内容是:" || i);
end;

2、入门案例

-- PL/SQL 入门练习1:打印“welcome !!!”
begin
  dbms_output.put_line("welcome !!!");
end;

-- PL/SQL 入门练习2:定义变量 v_i ,并赋值 “welcome !!!”,再打印变量
-- 变量的类型,一定要支持赋值内容长度
declare 
 v_i varchar2(40);
begin
    v_i := "welcome welcome !!!";
    dbms_output.put_line(v_i);
end;

3、赋值+类型

3.1、赋值 into

3.2、变量类型 %type

3.3、变量类型练习

-- 练习3:需求:计算台账表中编号为1的用户当月用水金额。
---- 要求输出:单价、吨数、金额、上月用水量、本月用水量
declare
 v_price number;
 --上月累计用水量  t_account.num0%type
 v_num0 number;
 --本月累计用水量  t_account.num1%type
 v_num1 number;
 --使用量  		t_account.usenum%type
 v_usenum number;
 --金额
 v_money number;
 -- 吨数
 v_usenum2 number;
begin 
  -- 单价
  v_price := 3.45;
  -- 查询数据,获得用水量、金额
  select num0,num1,usenum,money into v_num0,v_num1,v_usenum,v_money from t_account where id = 1;
  -- 吨数 19920 --> /1000 --> 19.920  --> 19.92
  v_usenum2 := round(v_usenum / 1000 , 2 );
  -- 打印
  dbms_output.put_line("单价" || v_price || "、吨数"|| v_usenum2 ||"、金额"|| v_money ||"、上月用水量"|| v_num0 ||"、本月用水量"|| v_num1);
  
end;

3.4、变量类型 %rowtype

4、异常

-- 语法
declare
begin
	-- 正常代码
	-- 异常块
	exception
		when 异常类型 then
			处理
		when 异常类型 then
			处理
		....
end;
-- 常见异常类型:
no_date_found , 没有数据异常,查询结果为null
too_many_rows,太多行,查询结果大于1条

5、判断语句 if

6、循环

6.1、无条件循环

--语法
loop
	-- 代码
	-- 结束循环
	exit;
end loop;
--练习:输出从1开始的100个数
declare
  v_i int := 1 ;
begin
  loop
    dbms_output.put_line(v_i);
    -- 累加
    v_i := v_i + 1;
    -- 退出
    if v_i > 100 then
      exit;
    end if;
  end loop;
end;

6.2、while循环

--语法
while 条件
loop
	--内容
end loop;
-- 练习:求1-100和,并打印
declare
  --计数器
  v_i int := 1;
  --求和变量
  v_sum int := 0;
begin 
  while v_i <= 100
    loop
      --求和
      v_sum := v_sum + v_i;
      
      --累加
      v_i := v_i + 1;
    end loop;
  --打印
  dbms_output.put_line(v_sum);
end;

6.3、for循环

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯