Oracle(六)PL/SQL、循环和游标

-- View:视图(虚表),不占用物理空间!
--  如果没有权限
-- 使用dba登录  grant  create any  view to 用户名;

create or replace  view  teacher_view
as
select tname,sal from teacher

--  查询视图
select * from teacher_view

************=======PL/SQL=======*************

--PL/SQL (Procedural  Language) 过程化sql语言! 在原本的sql语句上 添加了 逻辑判断
--循环等操作!   在数据库 执行pl/sql程序时,pl/sql和sql语句时分别进行解析和执行的!

--语法结构     :=  就是赋值语句
--01.declare   可选部分  声明 : 变量, 异常,游标...

--02.begin     必要部分   书写:sql语句 和pl/sql语句

--03.exception  可选部分   针对出现异常时候的处理

--04.end       必要部分

-- 根据指定老师的编号查询薪水  输出一个结果
declare
  v_name  teacher.tname%type;
  v_sal   teacher.sal%type;
  v_result  varchar2(30);
begin
    select t.tname,t.sal into v_name,v_sal from teacher t where  tno=1002;
   --根据薪水   得到不同的返回结果
    if v_sal>=2000 and v_sal<=10000 then
      v_result:=‘还可以吧‘;
    elsif v_sal>10000 and v_sal<=40000 then
      v_result:=‘真可以‘;
    elsif v_sal>40000 then
      v_result:=‘牛牛牛‘;
    else
       v_result:=‘咩咩‘;
    end if;
      dbms_output.put_line(v_name||‘:‘||v_sal||‘=====‘||v_result);
   
    --根据 v_result的值 输出不同的结果
    case v_result
      when ‘还可以吧‘ then
         dbms_output.put_line(v_name||‘工资在2k到10k‘);
      when  ‘真可以‘ then
          dbms_output.put_line(v_name||‘工资在10k到40k‘);
      when ‘牛牛牛‘ then
         dbms_output.put_line(v_name||‘工资在40k以上‘);
        else
             dbms_output.put_line(v_name||‘工资2k以下‘);
      end case; 
    
end;

************=======循环=======*************

--循环结构
--01.loop 语法
   loop
     执行的语句;
     exit when 条件;
   end loop;

declare
i number;
begin
  i:=1;
  loop
    dbms_output.put_line(i);
    i:=i+1;
    exit when i>50;
   end loop;
end;
   
--02.while  语法
  while 条件  loop
   执行的语句;
  end loop;

declare
i number;
begin
  i:=1;
  while i<=50 loop
    dbms_output.put_line(i);
    i:=i+1; 
   end loop;
end;

--03.for 语法

for 变量 in  范围(上限,下限)loop
  执行的语句;
end loop;

declare
i number;
begin
for i in 1..50
   loop
    dbms_output.put_line(i);
   end loop;
end;

************=======游标=======*************

--游标:是系统给我们用户 开设一个数据缓冲区! 存放的是sql语句执行的结果!
--每个游标区都有一个名字,用户通过游标一行一行的获取记录!

--01.隐式游标  在我们Pl/sql中,程序执行sql语句时 自动创建! ====>sql
--02.显示游标  可以返回多行的查询!
--03.REF游标   用于处理运行时才能确定的动态sql 查询结果

--隐式游标属性
   --01.sql%found   影响了一行或者多行 都返回 true
   --02.sql%notfound   没有影响行数   返回 true
   --03.sql%rowcount    sql语句影响的行数
   --04.sql%isopen    游标是否打开,始终为false
declare
tname  teacher.tname%type; --声明一个变量
  cursor teacher_cursor  is  select tname from teacher; --声明游标
begin
   open teacher_cursor;  --打开游标
    fetch teacher_cursor into tname;
   --循环输出tname
   while teacher_cursor%found
     loop
       dbms_output.put_line(‘教师的姓名====‘||tname);
       fetch teacher_cursor into tname;
     end loop;
   close teacher_cursor;--关闭游标
end;

原文地址:https://www.cnblogs.com/xiaobaizhang/p/8724401.html

时间: 2024-11-05 12:23:51

Oracle(六)PL/SQL、循环和游标的相关文章

Oracle实践--PL/SQL基础之游标

PL/SQL基础入门之游标 PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性. ----------------------------------------------

Oracle之PL/SQL学习笔记

自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家批评指正. PL/SQL定义:PL/SQL是由Oracle开发,专门用于Oracle的程序设计语言. PL---Procedural Language. SQL—Structure QueryLanguage.PL/SQL包括过程化语句和SQL语句     PL/SQL的单位:块. 一个块中可以嵌套

Oracle中PL/SQL的执行部分和各种流程控制

Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: set serveroutput on; accept abc prompt '请输入abc的值'; DECLARE a int:= &abc; BEGIN dbms_output.put_line(a); END; 查询赋值举例: set serveroutput on; DECLARE str

Oracle中PL/SQL简介、基本语法以及数据类型

Oracle中PL/SQL简介.基本语法以及数据类型 一.PL/SQL简介. Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控制为一体的强大语言,PL/SQL不但支持更多的数据类型,拥有自身的变量申明,赋值语句,而且还有条件,循环等流程控制语句.过程控制结构与SQL数据处理能力无缝的结合形成了强大的编程语言,可以创建过程和函数以及程序包. PL/SQL是一种块结构的语言,它将一组语句放在一个块中,一次性的发送给服务器,由服

Oracle实践--PL/SQL基础之代码块

PL/SQL基础入门之代码块 PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性. 优点: 1.       支持SQL,可以使用:DML,DCL,游标控制和SQL运算符 2

Oracle实践--PL/SQL基础之同义词和序列

PL/SQL基础入门之同义词和序列             PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性. 同义词: /*     同义词:现有对象的一个别名:    

Oracle实践--PL/SQL基础之表分区

PL/SQL基础入门之表分区 PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性. ---------------------------------------------

Oracle实践--PL/SQL基础之视图和索引

PL/SQL基础入门之视图和索引         PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性. -----------------------------------

Oracle实践--PL/SQL基础之触发器和程序包

PL/SQL基础之触发器和程序包  程序包 /* 程序包:对相关存储过程,函数,变量,游标和异常等对象的封装 有声明和主体组成 优点:1.模块化:2.更轻松的应用程序设计;3.信息隐藏;4.性能更佳 */ --程序包的声明:关键字:package is end create or replace package my_pack as procedure packageTest(v_num number); end my_pack;--也可以是 end; --程序包的主体 create or re

Oracle之PL/SQL学习笔记之触发器

Oracle之PL/SQL学习笔记之触发器 触发器是许多关系数据库系统都提供的一项技术.在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块. 触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行. 即触发器是当某个事件发生时自动地隐式运行.并且,触发器不能接收参数.所以运行触发器就叫触发或点火(firing).ORACLE事件指的是对数据库的表进行的INSERT. UPDATE及D