Oracle PL/SQL Nutshell
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
:=
orSELECT 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相关推荐
- oracle pl/sql 程序设计 历史笔记整理
20131016 周三 oracle pl/sql 程序设计 第2章 创建并运行pl/sql代码 sqlplus yjkhecc/yjkhecc@10.85.23.92:1521/orcl 在java ...
- Oracle如何代码编辑,配置UltraEdit为Oracle PL/SQL代码编辑器
配置UltraEdit为Oracle PL/SQL代码编辑器[@more@] 将下文复制到UltraEdit的wordfile.txt的最后,就能实现UltraEdit中对PL/SQL文件语法突出显示 ...
- oracle pl sql示例,oracle PL SQL学习案例(一)
oracle PL SQL学习案例(一) [示例1.1] 查询雇员编号为7788的雇员姓名和工资. 步骤1:用SCOTT/TIGER账户登录SQL*Plus. 步骤2:在输入区输入以下程序: /*这 ...
- Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据
Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 7.1 程序数据的命名 PL/SQL要求在给数据结构命名的时候应 ...
- Oracle PL SQL 精萃pdf
<Oracle PL SQL 精萃pdf> 下载地址: 网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731009.html
- oracle sql判断相等,Oracle PL/SQL判断两个字段相等或不等问题
Oracle PL/SQL中判断两个两个字段相等或者不相等的时候,常常出现:字段值明明不相等(一个空,一个不空),但是判断不相等的时候就是得不到TRUE. 例如以下代码: ... a1 VARCHA ...
- Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理
Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 ACID原则:即一个事务具有原子性.一致性. ...
- ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)
原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!) 继上篇:ORACLE P ...
- oracle存储过程多分支怎样写,如何从存储过程返回多行? (Oracle PL / SQL)
如何从存储过程返回多行? (Oracle PL / SQL) 我想用一个参数创建一个存储过程,该存储过程将根据参数返回不同的记录集. 这是怎么做的? 我可以从普通SQL中调用它吗? 5个解决方案 65 ...
最新文章
- DRBD数据同步部署-centos7
- 2019五月到六月反思复盘
- ElementUI中的el-table中实现动态添加一行、删除一行、清空所有行
- http协议的缺点和确保web安全的https协议
- 8051单片机指令和寻址方式
- jQuery.ready in CRM Fiori Opportunity Application
- Java LocalDate类| 带示例的getDayOfYear()方法
- 未发现数据源名称并且未指定默认驱动程序_看我如何发现NVIDIA GeForce Experience代码执行漏洞...
- 哟,2020年了!试着用vue做一个自己的小程序吧~~
- 暴风影音 2007 播放 avi 时出现两个画面的解决办法
- 浦发银行面试笔试经历
- mind map 思维导图
- 支付宝支付后页面跳转
- win7无法自动获取dns服务器地址,Win7无法自动获取DNS与IP地址怎么办
- 物联网使用什么数据库_如何使用关系数据库实现大规模物联网
- VMware如何克隆一个虚拟机
- 100道linux运维笔试题
- llt自发光_“贝爷”联名款海系列新品得物独家首发,呼吁年轻人保护海洋环境...
- TCP/UDP/SOCKET/HTTP浅谈
- 二进制补码计算——有符号数的乘法