Oracle PL/SQL Nutshell

持续更新中。。。

Basic Syntax & Variables

Basic Structure

PL/SQL can be executed from SQL Plus

  • Called PL/SQL blocks
  • Anonymous blocks as they do not have a name
  • Procedures/functions are named blocks
[Declare]
BEGIN
[Exception]
END

Examples

VAR P_SET VARCHAR2(20)
BEGIN:P_SET := 'Hello world'; -- colon(:)variable_name, bind variable
END;
SET SERVEROUTPUT ON
BEGINdbms_output.put_line('Hello world');
END;

Oracle Architecture

Variables

  • Used throughout PL/SQL
  • Holding area for data
  • Default values, constants
  • Values from the database
  • Populated with :=
VAR_NAME [CONSTANT] datatype [NOT NULL] [:= value]

Name conventions

prefix meaning
V_ standard variable
C_ constant
P_ variable that will be used/originated in SQL Plus
G_ variable used within multiple PL/SQL blocks

With prefix you can use preserved words

  • Declare variables in DECLARE section
  • := or SELECT INTO
  • Use all the SQL data types
  • Can use syntax %TYPE and %ROWTYPE to establish variables with database properties - type inheritance/runtime inheritance

Data types

Scalar types

Number
  • BINARY_DOUBLE
  • BINARY_FLOAT
  • BINARY_INTEGER
  • DEC
  • DECIMAL
  • DOUBLE PRECISION
  • FLOAT
  • INT
  • INTEGER
  • NATURAL
  • NATURALN
  • NUMBER
  • NUMERIC
  • PLS_INTEGER
  • POSITIVE
  • POSITIVEN
  • REAL
  • JSONTYPE
  • SMALLINT
Characters
  • CHAR
  • CHARACTER
  • LONG
  • LONG RAW
  • NVARCHAR2
  • RAW
  • ROWO
  • STRING
  • UROWO
  • VARCHAR
  • VARCHAR2
Boolean
  • BOOLEAN
Date
  • DATE
  • DATETIME

Composite types

  • RECORD
  • TABLE
  • VARRAY

Reference types

  • REF CURSOR
  • REF object_type

LOB types

  • BFILE
  • BLOB
  • CLOB
  • NCLOB

Variable scope

  • Can nest PL/SQL blocks - blocks within blocks
  • Inner blocks can see outer blocks variables
  • Outer blocks cannot see inner block variables
DECLARE
V_V1 NUMBER;
BEGIN
V_V1 := 1;DECLAREV_V2 NUMBER;BEGINV_V1 := V_V2;END;
DBMS_OUTPUT...
END;

Create type

DECLARE
TYPE emp_info IS RECORD (v_ename emp.ename%TYPE,v_sal emp.sal%TYPE
);
emp_rec emp_info;
emp_rec2 emp%ROWTYPE;

Control Flow

Logic Flow

IF…ELSIF…ELSE

IF <condition> THEN<statements>;
ELSIF <condition> THEN<statements>;
ELSE<statements>;
END IF;

CASE WHEN

CASEWHEN <condition> THEN<statements>;WHEN <condition> THEN<statements>;ELSE<statements>
END;

LOOP

LOOP

LOOP<statements>;EXIT LOOP WHEN <condition>;
END LOOP;

WHILE

WHILE <condition> THEN<statements>;
END;

FOR LOOP

FOR <var_> IN var_
LOOP<statements>;
END LOOP;

CURSOR

DECLARECURSOR c1 ISSELECT prod_id,cust_id, time_id, amount_soldFROM salesWHERE amount_sold > 100;c1_rec c1%ROWTYPE;l_cust_firstname customers.cust_firstname%TYPE;l_cust_lastname customers.cust_lastname%TYPE;
BEGINFOR c1_rec IN c1LOOP...END LOOP;
END;

Oracle PL/SQL Nutshell相关推荐

  1. oracle pl/sql 程序设计 历史笔记整理

    20131016 周三 oracle pl/sql 程序设计 第2章 创建并运行pl/sql代码 sqlplus yjkhecc/yjkhecc@10.85.23.92:1521/orcl 在java ...

  2. Oracle如何代码编辑,配置UltraEdit为Oracle PL/SQL代码编辑器

    配置UltraEdit为Oracle PL/SQL代码编辑器[@more@] 将下文复制到UltraEdit的wordfile.txt的最后,就能实现UltraEdit中对PL/SQL文件语法突出显示 ...

  3. oracle pl sql示例,oracle PL SQL学习案例(一)

    oracle PL SQL学习案例(一) [示例1.1]  查询雇员编号为7788的雇员姓名和工资. 步骤1:用SCOTT/TIGER账户登录SQL*Plus. 步骤2:在输入区输入以下程序: /*这 ...

  4. Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据

    Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 7.1 程序数据的命名 PL/SQL要求在给数据结构命名的时候应 ...

  5. Oracle PL SQL 精萃pdf

    <Oracle PL SQL 精萃pdf> 下载地址: 网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731009.html

  6. oracle sql判断相等,Oracle PL/SQL判断两个字段相等或不等问题

    Oracle PL/SQL中判断两个两个字段相等或者不相等的时候,常常出现:字段值明明不相等(一个空,一个不空),但是判断不相等的时候就是得不到TRUE. 例如以下代码: ... a1  VARCHA ...

  7. Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理

    Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 ACID原则:即一个事务具有原子性.一致性. ...

  8. ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)

    原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!)   继上篇:ORACLE P ...

  9. oracle存储过程多分支怎样写,如何从存储过程返回多行? (Oracle PL / SQL)

    如何从存储过程返回多行? (Oracle PL / SQL) 我想用一个参数创建一个存储过程,该存储过程将根据参数返回不同的记录集. 这是怎么做的? 我可以从普通SQL中调用它吗? 5个解决方案 65 ...

最新文章

  1. DRBD数据同步部署-centos7
  2. 2019五月到六月反思复盘
  3. ElementUI中的el-table中实现动态添加一行、删除一行、清空所有行
  4. http协议的缺点和确保web安全的https协议
  5. 8051单片机指令和寻址方式
  6. jQuery.ready in CRM Fiori Opportunity Application
  7. Java LocalDate类| 带示例的getDayOfYear()方法
  8. 未发现数据源名称并且未指定默认驱动程序_看我如何发现NVIDIA GeForce Experience代码执行漏洞...
  9. 哟,2020年了!试着用vue做一个自己的小程序吧~~
  10. 暴风影音 2007 播放 avi 时出现两个画面的解决办法
  11. 浦发银行面试笔试经历
  12. mind map 思维导图
  13. 支付宝支付后页面跳转
  14. win7无法自动获取dns服务器地址,Win7无法自动获取DNS与IP地址怎么办
  15. 物联网使用什么数据库_如何使用关系数据库实现大规模物联网
  16. VMware如何克隆一个虚拟机
  17. 100道linux运维笔试题
  18. llt自发光_“贝爷”联名款海系列新品得物独家首发,呼吁年轻人保护海洋环境...
  19. TCP/UDP/SOCKET/HTTP浅谈
  20. 二进制补码计算——有符号数的乘法

热门文章

  1. C++全局变量初始化的顺序
  2. 仓管云——企业云erp功能有哪些?
  3. mac(4) : 删除系统自带输入法
  4. 人工智能公需科目答案_《人工智能与健康》2019公需科目考试及答案.doc
  5. 「五度易链」大数据 让招商更精准
  6. 使用zbar进行二维码或条形码(一维码)扫描
  7. 数据结构经典习题【part 1】
  8. #10172. 「一本通 5.4 练习 1」涂抹果酱 【 三进制状态压缩 】【 方案数 】
  9. 怎样修改日立uax规格表_UAX型电梯调试手册
  10. 数据库学习记录(上)