`

Oracle数据库之PLSQL基础

阅读更多
--===================================PLSQL基础篇============================
-- 数据类型:
----  标量类型:数字 number,字符 varchar,varchar2,char,日期 ,
--             布尔 boolean (true,false,null)(存储单个值)
---  复合类型:record,集合类型 (存放多个值的变量)
---  参照类型:cursor
---  LOB 类型:存储大数据类型(BFILE,BLOB,CLOB,NCLOB);
--============ ===================================
---  EMP , DEPT 表;
--===============================================
--变量声明

declare
    v_realName  varchar2(20);
    -- := 赋值符号
    v_baseCost  number(7,2) :=5.9; --定义number类型,赋值5.9
    v_count binary_integer :=0;
    v_start boolean not null default false;
begin
    select 'hello ' into v_realname from dual; -- 给 v_realName变量赋值
    dbms_output.put_line('v_realName--'||v_realName);
    dbms_output.put_line('v_baseCost---'||v_baseCost);
    dbms_output.put_line('v_count---'||v_count);
end;
-- 执行 用  " / " ,下述同样操作

 
    --dbms_output.put_line('v_start---'||v_start); -- boolean类型的不能输出,不能插入,不能将列值保存到boolean变量中
    -- 只能对boolean变量执行逻辑操作(见后逻辑语句)

-- %type: 变量具有数据库的表中某列或其它变量相同的类型

declare
    v_name emp.ename%type;
 begin
  select ename into v_name from emp where empno = 7900;
  dbms_output.put_line('v_name---'||v_name);
end;

 

-- Record类型:处理单行多列问题
-- record变量的引用:记录类型变量的属性引用方法 " . "

declare
--t_emp_rec是记录类型
    type t_emp_rec is record   (
            name  emp.ename%TYPE,   -- name 是t_emp_rec的成员.
            job emp.job%TYPE);
 emp_rec     t_emp_rec; -- 声明--t_emp_rec记录类型的变量
begin
    select ename , job  into emp_rec from emp where empno = 7900; -- 读取数据到record类型
    -- select ename , job , sal   into emp_rec from emp where empno = 7900; -- error,没有足够的列值
    dbms_output.put_line('emp_rec-name---'||emp_rec.name);
    dbms_output.put_line('emp_rec-job---'||emp_rec.job);
end ;

 
 

-- 用%rowtype来定义record类型(作用:简化record的定义).
--  当使用%rowtype定义记录类型时,record成员的名称和类型与表或者视图的列名称和类型完全相同.

declare
        v_emp emp%rowtype ; -- v_cost的名称和类型和 cost表一样
 begin
    select *   into v_emp from emp where empno = 7900; -- 读取数据到record类型
    dbms_output.put_line('v_emp-name---'||v_emp.ename);
end ;

 

--================================================================
--=========流程控制:=============


 /*
if 布尔表达式
        then xxxx
    elsif 布尔表达式
        then      xxxx
    else        xxxx
end if;
*/

declare
 v_var boolean not null default false;
v_int integer :=5;   
 begin
    if v_var
        then  dbms_output.put_line('v_var: true');
    else
          dbms_output.put_line('v_var: false');
           -- then dbms_output.put_line('v_var: false'); error
    end  if; --必须结束if
    -- 多个if嵌套
    if(v_int > 5)
        then  dbms_output.put_line('v_int: >5');
    elsif (v_int > 2)
        then  dbms_output.put_line('v_int: >2');
    else
         dbms_output.put_line('v_int: else');
end if;
end ;

 
/*
loop循环:
 loop
    语句 1 ;
    语句 2;
    exit when 表达式;
end loop;
*/

declare
    v_int integer :=3;
begin
    loop
      dbms_output.put_line('v_int:'||v_int);   
     v_int :=v_int+1;
     
     if(v_int > 10)
        then exit; --退出
     end if;
    --exit when v_int > 10; 可以出现在循环的任何位置,注意是when ,不是then;
    end loop;
end;

 

 

--where循环:
/*
while 布尔表达式 loop
    语句1;
    语句2;
end loop;
*/

declare
    v_int integer :=1;
begin
    while v_int < 10 loop
          dbms_output.put_line('v_int:'||v_int);   
            v_int :=v_int+1;
    end loop;
end;

 

/*
for循环:
for 循环计数器 in 下限 .. 上限 loop
    语句1;
    语句1;
end loop;
*/

declare
    v_int integer :=0;
begin
for v_int in 1 .. 10 loop
            -- 循环 包括1,包括10;
            dbms_output.put_line('v_int:'||v_int);   
            --v_int :=v_int+1; v_int不能用来作为赋值目标
end loop;
end;

 

-- for循环 倒序

declare
    v_int integer :=10;
begin
for v_int in reverse 1 .. 10 loop
            dbms_output.put_line('v_int:'||v_int);   
            --v_int :=v_int+1; v_int不能用来作为赋值目标
end loop;
end;

 

--Notice: v_int 是 1.. 10循环中的每个变量,不能用来作为赋值目标
--    把 v_int 初始化为5,输出的结果跟初始化为0是一样.类似如下的java程序:

int j = 5;
for (j = 1 ;j <= 10 ; j++){
    System.out.println(j); //  1 .... 10;
}

 

--NULL
    --NULL语句不会执行任何操作,并且会直接将控制传递到下一条语句,使用NULL语句主要是提高程序的可阅读性

DECLARE
    v_sal emp.sal%TYPE;
    v_ename emp.ename%TYPE;
BEGIN
      SELECT ename,sal into v_ename,v_sal FROM emp WHERE empno=7900;
       IF v_sal<3000 then
          UPDATE emp SET comm=sal*1.2 WHERE ename=v_ename;
        ELSE
           NULL;
         END IF;
END;

 

 

分享到:
评论

相关推荐

    PLSQL Developer7(oracle数据库)

    PLSQL Developer7(oracle数据库) PLSQL Developer7(oracle数据库) PLSQL Developer7(oracle数据库) PLSQL Developer7(oracle数据库) PLSQL Developer7(oracle数据库) PLSQL Developer7(oracle数据库) ...

    有JavaWEB的网上商城系统源码+项目说明(SSM框架、Shiro技术、Oracle数据库、PLSQL编程).zip

    有JavaWEB的网上商城系统源码+项目说明(SSM框架、Shiro技术、Oracle数据库、PLSQL编程、JSP、JQuery、Ajax、Jso).zip 有JavaWEB的网上商城系统源码+项目说明(SSM框架、Shiro技术、Oracle数据库、PLSQL编程、JSP、...

    Oracle数据库plsql客户端

    Oracle数据库PL/SQL Developer客户端是数据库管理员和开发人员常用的工具,它专为Oracle数据库系统设计,提供了便捷的界面来编写、测试和调试PL/SQL代码。这个工具的强大之处在于其全面的功能集,允许用户进行数据库...

    Oracle数据库连接工具PLSQL轻桌面工具包

    Oracle数据库连接工具PLSQL轻桌面工具包,安装PLSQL必须下载轻桌面工具包

    Oracle数据库培训-PLSQL编程

    Oracle数据库培训-PLSQL编程

    基于oracle数据库的PLSQL编程以及存储过程的创建和使用资料.zip

    通过深入学习和实践这些内容,开发者能够熟练掌握在Oracle数据库中使用PLSQL进行编程,并能有效地创建和管理存储过程,以提高数据库应用的效率和质量。在实际工作中,了解这些知识点对于数据库管理和开发工作至关...

    oracle数据库和plsql语法练习

    Oracle数据库是一种广泛应用于企业级应用的高性能关系型数据库系统,由甲骨文公司开发和维护。它支持复杂的事务处理、数据存储和管理,是许多企业的首选数据库解决方案。PL/SQL,全称Procedural Language/Structured...

    ORACLE 数据库开发_PLSQL基础.doc

    大量源码案例,手把手教你PLSQL数据库开发。内容预览: ---- 第一章 PL/SQL 简介 ---- ---- 第二章 PL/SQL程序结构 ---- ---- 第三章 变量与数据类型 ---- ---- 第四章 PL/SQL控制语句 ---- ---- 第五章 PL/SQL游标 ...

    oracle客户端(plsql developer连接远程数据库)

    plsql developer连接远程数据库(本地不用安oracle)

    oracle数据库利用plsql提取(导出).doc

    ### Oracle数据库利用PL/SQL开发工具进行数据提取详解 #### 一、Oracle数据库与PL/SQL简介 在深入了解如何利用PL/SQL Developer进行数据提取之前,我们先来简单了解一下Oracle数据库以及PL/SQL的基本概念。 - **...

    使用PLSQL 创建Oracle数据库用户并设置权限

    "使用PLSQL创建Oracle数据库用户并设置权限" 在 Oracle 数据库中,创建用户并设置权限是数据库管理员的基本任务之一。在本文中,我们将使用 PLSQL 创建 Oracle 数据库用户并设置权限,包括创建用户、设置权限和创建...

    Oracle12c数据库基础教程Oracle12c数据库PLSQL语言基础.pptx

    PL/SQL是Oracle数据库系统提供的扩展SQL语言,用于在各种环境下对Oracle数据库进行访问。 一、PL/SQL语言简介 PL/SQL是Procedure Language/Structured Query Language的缩写,它是Oracle数据库系统提供的一种程序...

    ORACLE数据库的PLSQL程序设计

    oracle数据库系统的好工具,plsql程序设计,内容详尽,适合初学者,步骤详细,是一份难能可贵的资料,我找了很久的,现在共享给大家

    使用plsqldev对oracle数据库做备份还原操作

    在Oracle数据库管理中,PL/SQL Developer是一款非常实用的工具,它专为Oracle数据库的存储程序单元开发设计,包括过程、函数、包、触发器等的编写和调试。这款工具以其用户友好、代码质量优化以及高生产力而受到青睐...

    plsqlDev链接Oracle数据库使用

    plsqlDev链接Oracle数据库使用plsqlDev链接Oracle数据库使用plsqlDev链接Oracle数据库使用

    PLSQL语法Oracle数据库

    PLSQL语法Oracle数据库

    plsql 连接oracle数据库工具

    其中,"plsql"通常指的是Oracle的PL/SQL Developer,这是一个强大的第三方工具,专为开发和管理Oracle数据库的PL/SQL代码而设计。它提供了代码编辑、调试、数据库对象浏览、版本控制等多种功能,极大提高了开发效率...

    oracle 数据库 plsql 存储过程

    ### Oracle数据库PL/SQL存储过程详解 #### 一、存储过程概述 **Oracle存储过程**是一种可以在Oracle数据库中存储并可被多次调用的PL/SQL代码块。它由一系列的PL/SQL语句组成,可以包含控制流程、变量声明等,能够...

    大型数据库系统技术课程 Oracle数据库OceanBase数据库知识教程 PLSQL介绍全部课程PPT课件共12个章节.rar

    1-2-oracle数据库基础 Oracle体系结构 共158页.ppt 2-1-大型数据库值Oracle 11g SQL Plus 共46页.ppt 2-2-Oracle数据库知识 PLSQL介绍 共69页.ppt 3-1-Oracle数据库知识 PLSQL控制结构 共25页.ppt 4-1-异常处理 共87...

    PLSQL_oracle数据库

    了解了这些基础知识后,对于使用PLSQLDeveloper_win32位的用户,还需要熟悉Oracle数据库的基础概念和PLSQL语法。例如,了解如何声明变量、控制流程(如IF-THEN-ELSE,WHILE循环,CASE语句)、处理异常(EXCEPTION块...

Global site tag (gtag.js) - Google Analytics