预备 ( PL/SQL 好处 )

Integration : 集成度高 ( server 和 application 中都有 , 例如 : Oracle Developer )

Improved performance : ( 必须系统中计算工时 , 如果使用 procedure , 则只需要传几个参数过去 , 可以很少的使用 network ,

而如果没有使用 procedure , 则每条记录的情况都要传给SERVER, 假如公司有10000人 , 则就需要使用 network很多 )

Modularized program development : 使用模块 ( begin ... end ) , Place reusable PL/SQL code in library to be shared between Oracle Form and Oracle Reports.

Portable , you can declare varibales . ( 可以复制到别的 SERVER 中执行 )

You can program with control structure . ( include handle errors )

匿名块不保存在数据库内部. ( block ) ( 执行完就没有了 )

1.变量定义

变量种类 : PL/SQL变量,系统绑定变量

PL/SQL变量 : scalar , composite , reference , LOB ( large objects ) ( 在此 只讨论 scalar , composite )

系统绑定变量 : 定义在外部环境 ( i*SQL ) 中,可以用做参数传递的变量。

identifier [CONSTANT] datatype [NOT NULL] [:= | default exp];

例如 :

declare

v_depno number(3) NOT NULL := 100; ( 有 NOT NULL 必须给值 )

c_comn CONSTANT number(4) := 1400; ( 有 CONSTANT 必须初始化 )

v_location varchar(20) := “Hello'’world”( 如果字符串中有’,那么必须两次使用,成对出现 )

%TYPE ( 前面定义过的变量,或者是TABLEZ中的列 )

%ROWTYPE

v_name employees.last_name%TYPE

v_balance number(10,2) ;

v_min_balance v_balance%TYPE := 10;

v_ename := LOWER( v_ename ) ;  可以使用函数

字符串问题,例如 tom’s home

v_home = q’!tom’s home!’ 或者 q’[! tom’s home ]’其中主要格式为 q’分隔符,例如! [] 等等

当然,因为限定成对出现,所以如果你写 “tom'’s home” 也是可以的。

declare 声明部分的变量在执行语句中不需要加 : 冒号 例如:

   1:  DECLARE
   2:    v_bonus  NUMBER(6);
   3:  BEGIN
   4:    SELECT salary * 0.01
   5:    INTO v_bonus      -- 注意此处没有冒号
   6:    FROM employees
   7:    WHERE EMP_ID = '2008491';
   8:  END;

Bind variables : 变量是在 host environment中定义,主要是提供参数给 PL/SQL BLOCK

系统绑定变量,可以通过 print 显示内容, 例如 PRINT g_n ,

VARIABLE return_code NUMBER ( 可以直接在PL/SQL中使用,不用再 declare , 此种变量必须要冒号 :

   1:  VARIABLE g_salary NUMBER
   2:  BEGIN
   3:    SELECT salary
   4:    INTO :g_salary        -- 注意此处有冒号
   5:    FROM EMPLOYEES
   6:    WHERE EMPLOYEE_ID = '20080504';
   7:  END;

PLSQL variables assignments always use :=

SQL column assignments always use =

不可以在 PL/SQL 中使用的函数 :

- DECODE

- GROUP functions ( AVG, MIN, MAX, COUNT, SUM, STDDEV, VARIANCE )

group functions apply to groups of rows in a table and therefore are availiable only in SQL statements in a PL/SQL block.

也就是说,在PL/SQL中的SQL中可以使用以上函数。

2. 命名规则

identifier

Naming Convention

Example

variable v_name v_sal
constant c_name c_company_name
cursor name_cursor emp_cursor
exception e_name e_too_many
table type name_table_type amount_table_type
table name_table country_table
record type name_record customer_record
record name_record customer_record
substitution p_name p_sal
host or bind variable g_name g_year_sal
3. 输出

DBMS_OUTPUT.PUT_LINE()

4. 注释

-- 单行注释

/**/ 多行注释

5. scope

同 C 一样, PL/SQL 中的变量也是有 SCOPE 的

6. 运行

/ A slash( / ) runs the PL/SQL block in a script file or in some tools such as isql*plus.

7. 在 PL/SQL 中使用函数

v_ename := LOWER( v_ename) ;

Most of the SQL function can bu used in PL/SQL ,

PL /SQL has its own error handling functions which are : ( SQLCODE, SQLERRM )

8. Qualify an identifier

标识符可以使用 label 区分

注意 : 上边的 outer.birthdate ( 这样在内部的 begin end , 可以访问外部变量 )

9. 特殊的操作符号

** 幂运算

~= 约等于

<>, != , ^= 不等于

转载于:https://www.cnblogs.com/moveofgod/archive/2012/11/16/2773279.html

PL/SQL 基础( 上 )相关推荐

  1. Oracle PL/SQL基础知识

    Oracle PL/SQL基础知识 过程(存储过程) 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out).通过在过程中使用输入参数,可以将数据传递到执行部分 ...

  2. ORACLE甚而,PL/SQL基础

    Oracle PL/SQL语言基础 PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用 ...

  3. oracle空间数据库实验报告,Oracle数据库实验报告六 PL/SQL基础

    Oracle数据库实验报告六 PL/SQL基础 -by QQC from BTBU [实验目的] PL/SQL的安装网上有很多教程这里就不做赘述了,如果后序需求大的话我再考虑做一期PL/SQL安装使用 ...

  4. PL/SQL基础之DECLARE部分(整理)

    整理于 Oracle PL/SQL编程详解 - 古立 - 博客园 PL/SQL基础之DECLARE部分整理 PL/SQL块的结构 声明规范 标识符 数据类型 定义记录类型语法: 定义VARRY数据类型 ...

  5. Oracle PL/SQL基础语法学习13:比较运算符

    系列文章目录 Oracle PL/SQL基础语法学习12:短路求值 Oracle PL/SQL基础语法学习13:比较运算符 Oracle PL/SQL基础语法学习14:BOOLEAN表达式 文章目录 ...

  6. pl/sql基础练习

    pl/sql块: 1 匿名块            ----不能存储,不能共享 2 存储过程 函数 触发器 包   ----带有名称的块,可以存储在oracle服务器上,可以共享和多次调用. 1 匿名 ...

  7. 20个案例掌握PL/SQL 基础

    有MS SQL基础,学习了两周多的PL/SQL,做了一些事例,但是很多信息在网上难以找到太多正确的答案,看到一篇又一篇的PL/SQL博文,案例方面的博文一篇又一篇的雷同,一看就是是Ctrl+C的复制. ...

  8. pl/sql基础知识—定义并使用变量

    n  介绍 在编写pl/sql程序是,可以定义变量和常量:在pl/sql程序中包括有: ①标量类型(scalar) ②复合类型(composite) ③参照类型(reference) ④lob(lar ...

  9. PL/SQL基础(1):语法

    本篇是 Oracle基础小结 系列之一. 本篇目录 1.什么是PL/SQL? 2.PL/SQL基本结构 3.PL/SQL符号定义 4.PL/SQL数据类型 5.PL/SQL条件句法 6.PL/SQL循 ...

最新文章

  1. php api接口调试,PHP API接口测试小工具
  2. 【数字信号处理】傅里叶变换性质 ( 共轭对称、共轭反对称 与 偶对称、奇对称关联 | 序列对称分解定理 )
  3. 运行pyspider时出现 : ImportError: cannot import name ‘ContextVar‘
  4. python 2 3 共存_python 2 3 共存
  5. HDMI视频光端机常见故障问题及解决方法
  6. 2017.12.26
  7. Java 主流垃圾收集器
  8. java xlsx怎么转换成excel格式_python小工具 | Excel的xls和xlsx格式文件转换
  9. Linux. C语言中else,if else用法详解,C语言if else用法完全攻略
  10. k8s核心技术-Helm引入---K8S_Google工作笔记0043
  11. 毛发及眼球的渲染技术
  12. 【kmp专题】牛客网子串(进制转化+kmp/string.find())
  13. Qt 5 下载与安装详解
  14. 操作系统ucore lab1
  15. POJ 3253.Fence Repair
  16. 神马笔记 版本1.8.0——删除笔记/文件夹·技术细节篇
  17. 15+ Javascript 中的数组方法
  18. CPU也能速刷AlphaFold2?英特尔:请收下这份23倍通量优化指南
  19. Voronoi图(四):抛物线的妙用
  20. java关键字汉化_Java关键字 - 乱流的个人空间 - OSCHINA - 中文开源技术交流社区

热门文章

  1. 程序员绩效总结_阿里五年晋升三次,这个程序员要聊聊他的选择
  2. html audio播放本地语音文件,HTML5+ - audio音频播放及网络音频文件播放
  3. 通过python实现卷积神经网络_Python 徒手实现 卷积神经网络 CNN
  4. python列表修改元素_python list 中修改元素
  5. ajax empty,jQuery empty仅在AJAX调用后的第二次单击时起作用
  6. 2020年联通软件研究院校招笔试第三题
  7. Windows中将文件压缩成linux支持的tar.gz格式的压缩包
  8. Font Awesome一套绝佳的图标字体库和CSS框架的使用
  9. 【数据竞赛】“达观杯”文本智能处理挑战赛5
  10. Flutter 找不到 android sdk(图文详解)