PL/SQL 基础( 上 )
预备 ( 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 基础( 上 )相关推荐
- Oracle PL/SQL基础知识
Oracle PL/SQL基础知识 过程(存储过程) 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out).通过在过程中使用输入参数,可以将数据传递到执行部分 ...
- ORACLE甚而,PL/SQL基础
Oracle PL/SQL语言基础 PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用 ...
- oracle空间数据库实验报告,Oracle数据库实验报告六 PL/SQL基础
Oracle数据库实验报告六 PL/SQL基础 -by QQC from BTBU [实验目的] PL/SQL的安装网上有很多教程这里就不做赘述了,如果后序需求大的话我再考虑做一期PL/SQL安装使用 ...
- PL/SQL基础之DECLARE部分(整理)
整理于 Oracle PL/SQL编程详解 - 古立 - 博客园 PL/SQL基础之DECLARE部分整理 PL/SQL块的结构 声明规范 标识符 数据类型 定义记录类型语法: 定义VARRY数据类型 ...
- Oracle PL/SQL基础语法学习13:比较运算符
系列文章目录 Oracle PL/SQL基础语法学习12:短路求值 Oracle PL/SQL基础语法学习13:比较运算符 Oracle PL/SQL基础语法学习14:BOOLEAN表达式 文章目录 ...
- pl/sql基础练习
pl/sql块: 1 匿名块 ----不能存储,不能共享 2 存储过程 函数 触发器 包 ----带有名称的块,可以存储在oracle服务器上,可以共享和多次调用. 1 匿名 ...
- 20个案例掌握PL/SQL 基础
有MS SQL基础,学习了两周多的PL/SQL,做了一些事例,但是很多信息在网上难以找到太多正确的答案,看到一篇又一篇的PL/SQL博文,案例方面的博文一篇又一篇的雷同,一看就是是Ctrl+C的复制. ...
- pl/sql基础知识—定义并使用变量
n 介绍 在编写pl/sql程序是,可以定义变量和常量:在pl/sql程序中包括有: ①标量类型(scalar) ②复合类型(composite) ③参照类型(reference) ④lob(lar ...
- PL/SQL基础(1):语法
本篇是 Oracle基础小结 系列之一. 本篇目录 1.什么是PL/SQL? 2.PL/SQL基本结构 3.PL/SQL符号定义 4.PL/SQL数据类型 5.PL/SQL条件句法 6.PL/SQL循 ...
最新文章
- php api接口调试,PHP API接口测试小工具
- 【数字信号处理】傅里叶变换性质 ( 共轭对称、共轭反对称 与 偶对称、奇对称关联 | 序列对称分解定理 )
- 运行pyspider时出现 : ImportError: cannot import name ‘ContextVar‘
- python 2 3 共存_python 2 3 共存
- HDMI视频光端机常见故障问题及解决方法
- 2017.12.26
- Java 主流垃圾收集器
- java xlsx怎么转换成excel格式_python小工具 | Excel的xls和xlsx格式文件转换
- Linux. C语言中else,if else用法详解,C语言if else用法完全攻略
- k8s核心技术-Helm引入---K8S_Google工作笔记0043
- 毛发及眼球的渲染技术
- 【kmp专题】牛客网子串(进制转化+kmp/string.find())
- Qt 5 下载与安装详解
- 操作系统ucore lab1
- POJ 3253.Fence Repair
- 神马笔记 版本1.8.0——删除笔记/文件夹·技术细节篇
- 15+ Javascript 中的数组方法
- CPU也能速刷AlphaFold2?英特尔:请收下这份23倍通量优化指南
- Voronoi图(四):抛物线的妙用
- java关键字汉化_Java关键字 - 乱流的个人空间 - OSCHINA - 中文开源技术交流社区
热门文章
- 程序员绩效总结_阿里五年晋升三次,这个程序员要聊聊他的选择
- html audio播放本地语音文件,HTML5+ - audio音频播放及网络音频文件播放
- 通过python实现卷积神经网络_Python 徒手实现 卷积神经网络 CNN
- python列表修改元素_python list 中修改元素
- ajax empty,jQuery empty仅在AJAX调用后的第二次单击时起作用
- 2020年联通软件研究院校招笔试第三题
- Windows中将文件压缩成linux支持的tar.gz格式的压缩包
- Font Awesome一套绝佳的图标字体库和CSS框架的使用
- 【数据竞赛】“达观杯”文本智能处理挑战赛5
- Flutter 找不到 android sdk(图文详解)