zoukankan      html  css  js  c++  java
  • PL/SQL编程基础(二):变量的声明、赋值、(赋值、连接、关系、逻辑)运算符

    变量的声明、赋值、运算符

    1.声明并使用变量

    • 变量可以在声明时赋值,也可以先定义后赋值;
    • 使用%TYPE%ROWTYPE可以根据已有类型定义变量。

    PL/SQL是一种强类型的编程语言,所有的变量都必须在它声明之后才可以使用,变量都要求在DECLARE部分进行声明,而对于变量的名称也有如下的一些规定:

    • 变量名称的组成可以由字母、数字、_$#等组成;
    • 所有的变量名称要求以字母开头,不能是Oracle中的保留字(关键字)
    • 变量的长度最多只能为30个字符。

    声明变量的语法

    • 所有的变量都要求在DECLARE部分之中进行,在定义变量的时候也可以为其赋默认值,变量声明语法如下:
      • 变量名称 [CONSTANT] 类型 [NOT NULL] [:=value] ;
    • 组成:

    CONSTANT

    定义常量,必须在声明时为其赋予默认值;

    NOT NULL

    表示此变量不允许设置为NULL;

    :=value

    表示在变量声明时,设置好其初始化内容。

    定义变量不设置默认值

    DECLARE

     v_result VARCHAR2(30);----这里没有赋值

     BEGIN

     DBMS_OUTPUT.put_line('v_result的内容是['||v_result||']');

     END;

       /

    v_result的内容是[]

    定义变量

    DECLARE

    v_resultA NUMBER := 100 ;    -- 定义一个变量同时赋值

    v_resultB NUMBER ;        -- 定义一个变量没有设置内容

    BEGIN

    v_resultb := 30 ;            -- 没有区分大小写

    DBMS_OUTPUT.put_line('计算的结果是:' || (v_resultA + v_resultB) ) ;

    END ;

    /

    定义非空变量

    DECLARE

    v_resultA NUMBER NOT NULL := 100 ; -- 定义一个非空变量v_resultA,同时赋值

    BEGIN

    DBMS_OUTPUT.put_line('v_resultA变量内容:' || (v_resultA) ) ;

    END ;

    /

    定义常量

    DECLARE

    v_resultA CONSTANT NUMBER NOT NULL := 100 ; -- 定义一个常量同时赋值

    BEGIN

    DBMS_OUTPUT.put_line('v_resultA常量内容:' || (v_resultA) ) ;

    END ;

    /

     

    2.使用%TYPE声明变量类型

    • 在编写PL/SQL程序的时候,如果希望某一个变量与指定数据表中某一列的类型一样,则可以采用“变量定义 表名称.字段名称%TYPE的格式,这样指定的变量就具备了与指定的字段相同的类型。

    使用“%TYPE”定义变量

    DECLARE

    eno        emp.empno%TYPE ;     -- empno类型相同

    ename    emp.ename%TYPE ; -- ename类型相同

    BEGIN

    DBMS_OUTPUT.put_line('请输入雇员编号:') ;

    eno := &empno ;                -- 由键盘输入雇员编号

    SELECT ename INTO ename FROM emp WHERE empno=eno ;

    DBMS_OUTPUT.put_line('编号为:' || eno || '雇员的名字为:'|| ename) ;

    END ;

    /

    编号为:7900雇员的名字为:JAMES

     

    3.使用%ROWTYPE声明变量类型

    • 使用“%ROWTYPE标记可以定义定义表中一行记录的类型。
    • 当用户使用了“SELECT … INTO …将表中的一行记录设置到了ROWTYPE类型的变量之中,就可以利用“rowtype变量.表字段”的方式取得表中每行的对应列数据。

    使用ROWTYPE装载一行记录

    DECLARE

    deptRow    dept%ROWTYPE ;        -- 装载一行dept记录

    BEGIN

    SELECT * INTO deptRow FROM dept WHERE deptno=10 ;

    DBMS_OUTPUT.put_line('部门编号:'||deptRow.deptno || ',名称:' || deptRow.dname || ',位置:' || deptRow.loc) ;

    END ;

    /

    部门编号:10,名称:ACCOUNTING,位置:NEW YORK

     

    运算符

    赋值运算符、连接运算符、关系运算符、逻辑运算符

    • 赋值运算符
      • 赋值运算符的主要功能是将一个数值赋予指定数据类型的变量,在之前声明变量时已经使用此运算符,其使用语法如下所示。
      • 变量 := 表达式 ;
    • 连接运算符
      • 连接运算符使用“||”即可完成操作。
    • 关系运算符
      • 关系运算符主要使用的是之前讲解限定查询时使用过的若干操作符

    运算符

    符号

    描述

    关系运算符

    >、<、>=、<=、=、!=、<>

    进行大小或相等的比较,其中不等于有两种:!=和<>

    判断null

    IS NULL、IS NOT NULL

    判断某一列的内容是否是null

    逻辑运算符

    AND、OR、NOT

    AND表示多个条件必须同时满足,OR表示只需要有一个条件满足即可,NOT表示条件去反,即:真变假、假变真

    范围查询

    BETWEE 最小值 AND 最大值

    在一个指定范围中进行查找,查找结果为:“最小值<=内容<=最大值”

    范围查询

    IN

    通过IN可以指定一个查询的范围

    模糊查询

    LIKE

    可以对指定的字段进行模糊查询

    • 逻辑运算符

    使用逻辑运算符可以连接多个布尔表达式的结果,在PL/SQL中逻辑运算符一共包含了三种:AND、OR、NOT。

    与(AND

    连接多个条件,多个条件同时满足时才返回TRUE,有一个条件不满足结果就是FALSE;

    或(OR

    连接多个条件,多个条件之中只要有一个返回TRUE,结果就是TRUE,如果多个条件返回的都是FALSE,则结果才是FALSE;

    非(NOT

    求反操作,可以将TRUE变FALSE、FALSE变TRUE。

    使用赋值运算符

    DECLARE

    v_info    VARCHAR2(50) := '寻香径' ;

    v_url        VARCHAR2(50) ;

    BEGIN

    v_url := 'http://www.cnblogs.com/thescentedpath/' ;

    DBMS_OUTPUT.put_line(v_info) ;

    DBMS_OUTPUT.put_line(v_url) ;

    END ;

    /

    字符串连接

    DECLARE

    v_info    VARCHAR2(50) := '寻香径' ;

    v_url        VARCHAR2(50) ;

    BEGIN

    v_url := 'http://www.cnblogs.com/thescentedpath/' ;

    DBMS_OUTPUT.put_line(v_info || ',网址:' || v_url) ;

    END ;

    /

    使用关系运算符

    DECLARE

    v_url        VARCHAR2(50) := 'http://www.cnblogs.com/thescentedpath/' ;

    v_num1        NUMBER := 80 ;

    v_num2        NUMBER := 30 ;

    BEGIN

    IF v_num1 > v_num2 THEN

    DBMS_OUTPUT.put_line('1个数字比第2个数字大。') ;

    END IF ;

    IF v_url LIKE '%wendy%' THEN

    DBMS_OUTPUT.put_line('网址之中包含wendy单词。') ;

    END IF ;

    END ;

    /

    观察逻辑运算结果

    DECLARE

    v_flag1        BOOLEAN := TRUE ;

    v_flag2        BOOLEAN := FALSE ;

    v_flag3        BOOLEAN ;

    BEGIN

    IF v_flag1 AND ( NOT v_flag2 ) THEN

    DBMS_OUTPUT.put_line('v_flag1 AND ( NOT v_flag2 ) = TRUE') ;

    END IF ;

    IF v_flag1 OR v_flag3 THEN

    DBMS_OUTPUT.put_line('v_flag1 OR v_flag3 = TRUE') ;

    END IF ;

    IF v_flag1 AND v_flag3 IS NULL THEN

    DBMS_OUTPUT.put_line('v_flag1 AND v_flag3 的结果为NULL') ;

    END IF ;

    END ;

    /

     

     

     

     

     

  • 相关阅读:
    AngularJS学习之旅
    webbug3.0菜鸟笔记1
    CTF练习(1)这是一张单纯的图片?
    三步删除U深度,老毛桃,大白菜捆绑软件!!
    flex弹性布局学习总结
    C# 播放音乐
    获取文件夹中的所有文件名
    C# 利用委托和事件 传入一个参数进行进行计算并返回结果
    C# 自定义颜色
    检测键盘是否按下指定按键
  • 原文地址:https://www.cnblogs.com/thescentedpath/p/ROWTYPE.html
Copyright © 2011-2022 走看看