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 ;

    /

     

     

     

     

     

  • 相关阅读:
    changing a pointer rather than erasing memory cells
    验证码识别 edge enhancement 轮廓增强 region finding 区域查找
    Manipulating Data Structures
    passing parameters by value is inefficient when the parameters represent large blocks of data
    Aliasing 走样
    Artificial Intelligence Research Methodologies 人工智能研究方法
    Thread safety
    include pointers as a primitive data type
    flat file
    functional cohesion
  • 原文地址:https://www.cnblogs.com/thescentedpath/p/ROWTYPE.html
Copyright © 2011-2022 走看看