• Oracle基础 PL-SQL编程基础(1) 变量和常量


    一、什么是PL-SQL

      PL-SQL是结合了Oracle过程语言和结构化查询语言(SQL)的一种扩展语言。具体来说,PL-SQL就是在普通的SQL语句的基础上增加了编程语言的特点,将数据操作和查询语句组织在PL-SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。

      使用PL-SQL有以下优点:

      1、能够把一组SQL语句放到一个模块中。使其更具模块化特点。

      2、可以在PL-SQL中增加逻辑结构判断、循环等程序结构。

      3、具有异常处理功能。使程序不会中断。

      4、减少网络交互,提高性能。

      5、具有更好的移植性。

     

    二、PL-SQL程序块

    PL-SQL程序块包括五个部分,声明部分,程序段开始,代码主体部分,异常部分,程序结束。

    DECLARE                    --声明部分
        声明变量、常量、游标、用户自定义异常的声明
        ....
    BEGIN   --程序开始部分
        SQL语句和PL-SQL语句构成的执行语句    --代码主体部分
        ...
        EXCEPTION
            程序出现异常时,捕获异常并处理异常。  --异常部分
            ...
    END;    --程序结束部分

    注意:

    1、其中声明部分和异常部分是可选的。

    2、DELCARE,BEGIN和EXCEPTION后没有分号,而END和其他所有的PL-SQL语句后必须以分号结束!

    三、变量的声明与赋值

    1、定义变量的语法:

      DECLARE variable_name date_type(size) [not null][:=value]

      DECLARE:定义变量所使用的关键字。

      variable_name:变量的名称。

      date_type(size):变量的类型,size表示数据长度。

      [not null]:变量不允许为空。

      [:=value]:为变量赋初始值。

    示例:  

    DECLARE 
        v_name varchar2(20);    --声明一个字符串类型的变量
        v_age number:=&age;     --声明一个数字类型的变量   &age表示输入数据,会临时弹出一个输入框让我们输入数据。

     PL-SQL中的变量命名规则:

      1、变量名首字母必须是英文字母,后面可以跟上字母、数字、下划线,#,$。

      2、变量名长度不超过30个字符。

      3、变量名中不能有空格。

      4、不能使用关键字命名。

      变量声明通常以字母v_为前缀!

    注意:

      变量的声明只在当前程序块中有效。

    2、变量的使用和赋值

      a.使用:=进行赋值

      v_name := 'wangwu';  --直接将'wangwu'赋值给变量v_name;

      

      b.使用select..into..进行赋值

    DECLARE
      PROID NUMBER := &ID;
      PNAME VARCHAR(20);
    BEGIN
      SELECT NAME INTO PNAME FROM ES_PRODUCT WHERE ID = PROID;  --将name列的值赋给pname
      DBMS_OUTPUT.PUT_LINE(PNAME);
    END;

      注意:

        1) 查询结果只能返回单条记录,多条或者0条都会返回异常。

        2) into语句必须是在select 和 from 字句之间。

        3)into所检索出的数据类型必须和变量的类型一致。

        4) into后赋值变量的个数必须和select查询出的变量个数一致。

      如果使用命令行执行PL-SQL代码块,使用/表示执行代码块,然后通过 set serveroutput on;开启输出内容!

      c.一次对多个变量进行赋值,并且变量的类型使用表中的类型。

    DECLARE
      v_id NUMBER := &ID;                    --定义输入变量
      v_name  es_product.Name%TYPE;           --定义变量,和es_product.name的类型一致
      v_price es_product.Price%TYPE;  
    BEGIN
      SELECT p.name,p.price
     INTO v_name, v_price
     FROM es_product p
     WHERE ID=v_id; --对多个变量进行赋值,这里只能返回单条记录。 DBMS_OUTPUT.PUT_LINE('id:' || v_id || 'name:' || v_name || 'price:' || v_price); --输出内容 END;

      d.定义数据行,使用数据行可以保存多个变量的值。以一个整体保存一条记录的列的信息。(类似对象的方式)

    DECLARE
      v_id NUMBER := &ID;
      v_row es_product%ROWTYPE;             --定义变量,es_product.rowtype为esproduct的行类型
    BEGIN 
      SELECT p.name,p.price
      INTO v_row.name, v_row.price
      FROM es_product p
      WHERE ID=v_id;
      DBMS_OUTPUT.PUT_LINE(
    'id:' || v_id || 'name:' || v_row.name || 'price:' || v_row.price);
    END;

    四、常量的声明和使用

    在Oracle中当有一些值不想被修改的情况下,可以声明为常量。

    语法:  

      常量名 CONSTANT 常量类型 := 初始值。

    DECLARE
      C_MSG CONSTANT VARCHAR2(20) := '常量的值';
    BEGIN
      C_MSG := 'aaa';
    END;

    声明常量C_MSG为字符串类型,如果在程序过程中如果修改常量的值,则会抛出异常。

  • 相关阅读:
    C#文件下载(实现断点续传)
    C#winform实现跑马灯
    Asp.net GridView转换成DataTable
    SQL Server 索引重建脚本
    SQL SERVER数据库维护与重建索引
    python try except 出现异常时,except 中如何返回异常的信息字符串
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 0: invalid continuation byte
    bower 安装依赖提示 EINVRES Request to https://bower.herokuapp.com/packages/xxx failed with 502
    EINVRES Request to https://bower.herokuapp.com/packages/ failed with 502
    使用notepad++插件远程编辑linux下的配置文件
  • 原文地址:https://www.cnblogs.com/zhengcheng/p/4168670.html
Copyright © 2020-2023  润新知