zoukankan      html  css  js  c++  java
  • PL/SQL入门理解(一)

    1、PL/SQL概述
    1)概念
    pl/sql(procedural language)是Oracle在标准sql语言的基础上的扩展,可以实现定义变量、使用逻辑控制语句等
    作用:默认oracle一次只能处理一条SQL语句,每条SQL语句都会向服务器发送请求调用,如果使用PL/SQL,一个块中的语句作为一个组,只向服务器发送一次请求调用,减少了网络传输,节省带宽,提高效率,提高安全性
    缺点:移值性差,只有oracle中可用
    2)组成
    pl/sql程序由块组成,由块可组成不同的程序形式,包括:匿名块、存储过程、函数、包、触发器等
    3)注释
    --单行注释
    /*多行注释*/
    4)命名
    当定义变量时,建议以v_作为前缀:v_name
    当定义常量时,建议以c_作为前缀:c_rate
    当定义过程时,建议以p_作为前缀
    当定义函数时,建议以fun_作为前缀
    当定义包时,建议以pac_作为前缀
    当定义游标时,建议以cur_作为前缀
    当定义例外时,建议以err_作为前缀

    2、块block
    1)概述
    块是pl/sql的基本组成单元,编写pl/sql实际上就是块
    块由三部分组成:定义部分、执行部分、异常处理部分(例外处理部分)
    定义部分declare:定义变量、常量、复杂数据类型、游标、异常等,可选
    执行部分begin:要执行的sql语句或pl/sql语句,必选
    异常处理部分exception:用来处理运行时的各种错误,可选

    以上为常规基础。。。。。。。。。。。。。。。。开始吧
    例1:只包含执行部分的pl/sql块
    --打开输出,使pl/sql程序能够输出信息
    set serveroutput on;(在Sqlplus中使用,用于打开oracle自带的输出方法dbms_output)

    begin
      dbms_output.put_line('Hello Oracle!');
    end;  
    注:如果使用工具是类似sqlplus等终端工具以 /结束语句;(如下图)

    例2:包含定义部分和执行部分的pl/sql块
    定义变量语法:变量名 [constant] 数据类型 [not null]
    为变量赋值:变量名:=变量值
    注:常量在声明时必须赋初始值

    注:常量在声明时必须赋初始值(上图为变量赋值方法)
    例3:包含定义部分和执行部分的pl/sql块,使用查询为变量赋值(表数据为Oracle下scott账户自带表)
    declare
      v_ename varchar2(20); 
      v_empno number(4);
    begin
      v_empno:=&请输入雇员编号;
      select ename into v_ename from emp where empno=v_empno;
      dbms_output.put_line(v_empno||'的姓名:'||v_ename);
    end;
    注:红色部分为 提示输入数据,会根据使用平台的差异,提示方式不一样,所起到的效果类似于java下的Scanner提示输入。

    例4:同时输出指定雇员的姓名和工资(查询多个值)
    declare
      v_ename varchar2(20);
      v_sal number(7,2);
    begin
      select ename,sal into v_ename,v_sal from emp where empno=&no;
      dbms_output.put_line(v_ename||','||v_sal);
    end;

    注:into只能用于通过查询为变量赋值,对于增删改,需要使用returning into 赋值
    例5:插入一个部门,将插入的部门信息显示出来
    declare
      v_deptno number(4);
      v_dname varchar2(20);
      v_loc varchar2(30);
    begin
      insert into dept values (50,'Development','NanJing') 
      returning deptno,dname,loc into v_deptno,v_dname,v_loc;
      dbms_output.put_line('编号:'||v_deptno||',名称:'||v_dname||',位置:'||v_loc);
    end;

    获取插入值的方法。
    例6:包含定义部分、执行部分、异常处理部分的块(异常块处理
    declare
      v_ename varchar2(20);
      v_sal number(7,2);
    begin
      select ename,sal into v_ename,v_sal from emp where empno=&no;
      dbms_output.put_line(v_ename||','||v_sal);
    exception --异常处理
      when no_data_found then
      dbms_output.put_line('您查找的雇员不存在!');
    end;
    no_data_found为系统报错原因,根据异常原因,输出特定异常原因。





  • 相关阅读:
    软件开发模型
    Java学习--数组
    10年软件测试经验
    Log4net
    文件下载界面
    VB.NET中文双引号的处理方法
    SOAPUI使用
    .net数字转换成汉字大写
    SQL调用Webservices
    SQL大小写金额转换
  • 原文地址:https://www.cnblogs.com/duanyajuzi/p/4947899.html
Copyright © 2011-2022 走看看