【本文介绍】

本文不是”语法大全“,只是记录下作项目里自己常用的一些语法。方便查询。

【语法】

【输出】  
(1)输出语法
DBMS_OUTPUT.PUT_LINE(   )

【定义】  
(1)定义变量:
......
as
变量名 类型(长度)
begin
......

例如:

(2)定义变量 ,类型 依赖其他变量的类型
例如:

这样,改了name的类型,returnValue类型也跟着改变。
(3)自定义类型(类似C语言的结构体)每次只能拿一条数据,不然会的报错。
例如:


(4)以“表”做为类型。每次只能拿一条数据,不然会的报错。
例如:


(5)以“表”做为类型的数组,数组下标为int型。每次只能拿一条数据,不然会的报错。


(6)以“表”做为类型的数组,数组下表为字符型。每次只能拿一条数据,不然会的报错。
CREATE OR REPLACE
PROCEDURE "userList"
AS
TYPE user_type_list is table OF
"user"%rowtype --索引表类型
index by VARCHAR2(20); myUserList user_type_list; BEGIN
SELECT * into myUserList('one') from "user" WHERE "user"."id" = '';
DBMS_OUTPUT.PUT_LINE(myUserList('one')."id");
DBMS_OUTPUT.PUT_LINE(myUserList('one')."name");
DBMS_OUTPUT.PUT_LINE(myUserList.first);
END;
(7)VARCHAR变长数组
CREATE OR REPLACE
PROCEDURE "userList"
AS TYPE user_type_list --数组名
is varray(100) OF --长度
"user"%rowtype; --类型 myUserList user_type_list := user_type_list(); --定义 BEGIN
myUserList.EXTEND; --分配存储空间,相当于C语言里面的malloc
SELECT * into myUserList(1) from "user" WHERE "user"."id" = '';
DBMS_OUTPUT.PUT_LINE(myUserList(1)."id");
DBMS_OUTPUT.PUT_LINE(myUserList(1)."name");
END;
【赋值】  
(1)赋值
变量名 := 值
例如:


(2)查询并赋值


【控制语句】  
(1)if语句
CREATE OR REPLACE
PROCEDURE "userList"
AS myResult NUMBER(10,4); --变量 BEGIN
myResult := SQRT(58+25*3+(19-9)**2);--数值表达式 IF myResult > 10 THEN --if语句
DBMS_OUTPUT.PUT_LINE('结果大于10'); ELSE IF myResult > 15 then -- else if语句
DBMS_OUTPUT.PUT_LINE('结果大于15');
END IF; --结束else if END IF; --结束if
END;
(2)case语句
CREATE OR REPLACE
PROCEDURE "userList"
AS myCase VARCHAR2(10) := 'A'; --变量 BEGIN
CASE myCase
WHEN 'A' THEN DBMS_OUTPUT.PUT_LINE('A');
WHEN 'B' THEN DBMS_OUTPUT.PUT_LINE('B');
ELSE DBMS_OUTPUT.PUT_LINE('什么也不匹配');
END CASE;
END;
(3)循环语句
CREATE OR REPLACE
PROCEDURE "userList"
AS myNumber number := 1; --变量 BEGIN
LOOP --循环开始的标志
if myNumber < 5 THEN --逻辑部分
DBMS_OUTPUT.PUT_LINE('myNumber的值为:'||myNumber);
myNumber := myNumber+1;
ELSE
EXIT ; --一定要有退出语句
END IF;
END LOOP; --结束循环
END;

CREATE OR REPLACE
PROCEDURE "userList"
AS myNumber number := 1; --变量 BEGIN
LOOP --循环开始的标志
if myNumber < 5 THEN --逻辑部分
DBMS_OUTPUT.PUT_LINE('myNumber的值为:'||myNumber);
myNumber := myNumber+1;
END IF;
EXIT WHEN myNumber >= 5; --eixt when 语句
END LOOP; --结束循环
END;

或:

CREATE OR REPLACE
PROCEDURE "userList"
AS myNumber number := 1; --变量 BEGIN
FOR inx IN 1..4 --for loop语句
LOOP --循环开始的标志
DBMS_OUTPUT.PUT_LINE('myNumber的值为:'||myNumber);
myNumber := myNumber+1;
END LOOP; --结束循环
END;
【异常】  
异常处理


注释
单行: --
多行:/*   */
转义字符
【常用函数】  
数值表达式
CREATE OR REPLACE
PROCEDURE "userList"
AS myResult NUMBER(10,4); --变量 BEGIN
myResult := SQRT(58+25*3+(19-9)**2);--数值表达式
DBMS_OUTPUT.PUT_LINE(myResult);
END;
字符切割函数
/**
用pipe函数实现字符串分割
**/
CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000);
/
CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2)
RETURN ty_str_split PIPELINED
IS
j INT := 0;
i INT := 1;
len INT := 0;
len1 INT := 0;
str VARCHAR2 (4000);
BEGIN
len := LENGTH (p_str);
len1 := LENGTH (p_delimiter); WHILE j < len LOOP
j := INSTR (p_str, p_delimiter, i); IF j = 0 THEN
j := len;
str := SUBSTR (p_str, i);
PIPE ROW (str);
IF i >= len THEN
EXIT;
END IF;
ELSE
str := SUBSTR (p_str, i, j - i);
i := j + len1;
PIPE ROW (str);
END IF;
END LOOP; RETURN;
END fn_split;
转义字符
cgar(47) 即代表 : /
数组长度函数
len := LENGTH (p_str);
产生随机数
substr(DBMS_RANDOM.VALUE(10,24),1,2)
生成日期
select to_char(sysdate,'yyyy-mm-dd-hh24-mi-ss') into mydate from dual;
UUID
select sys_guid() into myUser."id" from dual;

oracle入门(6)——PL/SQL常用语法的更多相关文章

  1. PL/SQL常用语法及举例

    PLSQL语句 DECLARE 声明部分 BEGIN 程序编写,SQL语句 EXECPTION 处理异常 END; / 声明部分(DECLARE) SQL> set serveroutput o ...

  2. 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

    本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...

  3. Oracle数据库之PL/SQL触发器

    Oracle数据库之PL/SQL触发器 1. 介绍 触发器(trigger)是数据库提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是 ...

  4. Oracle数据库之PL/SQL包

    Oracle数据库之PL/SQL包 1. 简介 包(PACKAGE)是一种数据对象,它是一组相关过程.函数.变量.常量和游标等PL/SQL程序设计元素的组合,作为一个完整的单元存储在数据库中,用名称来 ...

  5. Oracle数据库之PL/SQL过程与函数

    Oracle数据库之PL/SQL过程与函数 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据 ...

  6. Oracle数据库之PL/SQL异常处理

    Oracle数据库之PL/SQL异常处理 异常指的是在程序运行过程中发生的异常事件,通常是由硬件问题或者程序设计问题所导致的. PL/SQL程序设计过程中,即使是写得最好的程序也可能会遇到错误或未预料 ...

  7. Oracle数据库之PL/SQL流程控制语句

    Oracle数据库之PL/SQL流程控制语句 在任何计算机编程语言(如C,Java,C#等)都有各种流程控制语句,同样,在PL/SQL中也存在这样的流程控制结构. 几种常见的流程控制结构: 一.条件结 ...

  8. Oracle数据库之PL/SQL程序设计简介

    PL/SQL程序设计简介 一.什么是PL/SQL? PL/SQL是 Procedure Language & Structured Query Language 的缩写. ORACLE的SQL ...

  9. oracle数据库之PL/SQL 块结构和组成元素

    一.PL/SQL 块 (一)PL/SQL 程序由三个块组成,即声明部分.执行部分.异常处理部分 PL/SQL 块的结构如下: 1.DECLARE /* 声明部分: 在此声明 PL/SQL 用到的变量, ...

随机推荐

  1. WiFi(802.11)基础

    参考: 1. Wireshark数据包分析实战(第2版) 2. wifi技术从了解到熟悉1----概念.802.11协议简述及四种主要物理组件.wifi适配层.wap_supplicant和wap_c ...

  2. Spider Studio 新版本 (20140225) - 设置菜单调整 / 提供JQueryContext布局相关的方法

    这是年后的第一个新版本, 包含如下: 1. 先前去掉的浏览器设置功能又回来了! 说来惭愧, 去掉了这两个功能之后发现浏览经常会被JS错误打断, 很不方便, 于是乎又把它们给找回来了. :) 2. 为J ...

  3. php 的rabbitmq 扩展模块amqp安装

    php 的rabbitmq 扩展模块amqp安装 2017年10月08日 10:34:22 阅读数:240 使用PHP开发,要使用中间队列rabbitmq, 必须要安装PHP的扩展模块amqp, 服务 ...

  4. js学习笔记25----Event对象

    Event : 事件对象,当一个事件发生的时候,和当前这个对象发生的这个事件有关的一些详细的信息都会被临时保存到一个指定的地方-event 对象,供我们在需要时调用. 事件对象必须在一个事件调用的函数 ...

  5. JS侦测设备旋转方向

    window.onload = window.onresize = function initialLoad(){updateOrientation();} function updateOrient ...

  6. 关于JDK环境变量的配置问题

    网上配置JDK环境变量的时候一直说要配置三个环境变量,什么JAVA_HOME,Path,CLASSPATH 其实是说以后如果要修改JDK的版本或者路径,只要更改JAVA_HOME就可以了,Path,C ...

  7. 【BZOJ】1607: [Usaco2008 Dec]Patting Heads 轻拍牛头(特殊的技巧)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1607 其实题目描述不清楚,应该是 别人拿的数能整除自己拿的数 数据范围很大,n<=100000 ...

  8. 在CentOS上安装Java环境

    如何使用yum方式在CentOS上安装Java环境,系统以CentOS6.4为例. 工具/原料 Java JDK yum库 CentOS6.4 方法/步骤 1 查看CentOS自带JDK是否已安装. ...

  9. mac os x 记录 转载

    转载:远景网友(手机锋友t5sd3sf):http://bbs.feng.com/read-htm-tid-10434256.html 一个命令制作 OS X 原版安装U盘 1.要保证下载的原版安装包 ...

  10. 给Jquery easyui 的datagrid 每行添加操作链接

    背景 我们都知道Jquery的Easy-UI的datagrid能够加入而且自己定义Toolbar,这样我们选择一行然后选择toolbar的对应button就能够对这行的数据进行操作.但实际项目里我们可 ...