PL/SQL基本知识

原创 2006年06月14日 00:03:00

PL/SQL(过程化SQL语言)与Pascal的语法很相似。
一个完整的PL/SQL程序结构如下:
       declare
          定义语句块
       begin
          执行语句块
       exception
          异常处理
       end
变量,常量定义
变量声明
变量名 类型标识 [not null]:=值
括号内的 not null为可选,若选用,表明该变量不能为空。

常量声明
常量名 constant 类型标识 [not null]:=值
NULL的概念:
NULL 未定义,不可操作,什么都不是
NULL != 0    NULL!='空格'   
和NULL的任何运算都返回NULL
ORACLE里未定义的变量值都为NULL
Oracle 的基本数据类型:

复合数据类型:
1.使用%type定义变量:
%type用来定义与数据表中字段数据类型一致的数据类型。它会随着表中字段类型的改变而改变。
定义方法:
变量名 表名.字段名%type;
2.定义记录型数据类型:(相当于自定义类型,C里面的结构体)
定义方法:
type newtype_name is record(myrecordnumber int,mycurrentdate date);
3.使用%rowtype定义变量 
使用%rowtype可以使变量获得整修记录的数据类型
定义方法:
变量名 表名%rowtype;
4.定义一维表类型变量(一维数组)
定义方法:
type tabletype_name is table of 类型 index by binary_integer;
tabletype_name是新定义的类型名
类型为前面的类型定义
以 tabletype_name(1) 的形式引用。
5.定义多维表类型变量
相当于多维数组
定义方法:
type tabletype_name is table of tablename%rowtype index by binary_integer;

关于Oracle PL/SQL中数组的问题

oracle有三种复合类型:TABLE,RECORD和VARRAY。TABLE允许用户定义用于数组处理的PL/SQL表。Table复合类型向开发者提供了可用于数组处理的机制。

    要初始化数组,必须首先定义数组名或type,在本例中是emp_name。这个table列被定义为最大有20位的varchar2。可以将列定义为任意合法的PL/SQL数据类型,但主键或INDEX必须是BINARY_INTEGER类型的。

    下面是偶今天刚写的一个简单例子:

declare
    i binary_integer;
    type emp_name is table of varchar2(20)
    index by binary_integer;
    old_emp_name emp_name;   
begin
    old_emp_name(1):='allen';
    old_emp_name(2):='joe';
    old_emp_name(3):='jay';
    old_emp_name(4):='hellen';
    old_emp_name(5):='augustine';
    for i in 1..5 loop
        insert into tname(tname)values(old_emp_name(i));
        commit;
    end loop;
end;

这个只是一维数组。多维的可以用record+table实现。

 

PL/SQL 基本语法

PL/SQL介绍PL/SQL是Oracle对标准数据库语言SQL的过程化扩充,它将数据库技术和过程化程序设计语言联系起来,是一种应用开发语言,可使用循环,分支处理数据,将SQL的数据操纵功能与过程化语...
  • u012414590
  • u012414590
  • 2017年04月06日 17:33
  • 2851

PL/SQL基础(1):语法

目录 1、什么是PL/SQL? 2、PL/SQL基本结构 3、PL/SQL符号定义 4、PL/SQL数据类型 5、PL/SQL条件句法 6、PL/SQL循环 什么是PL/SQL? PL/SQL...
  • dou3516
  • dou3516
  • 2016年09月03日 19:29
  • 695

PL/SQL简介与简单实用

一、PL/SQL简介: (1)PL/SQL俗称过程化SQL语言(Procedural Language/SQL),是Oracle对SQL的 过程化扩充 而形成的程序开发语言。在普通SQL语句的使用...
  • super_YC
  • super_YC
  • 2017年04月03日 04:59
  • 362

PL/SQL的可用注册码

注册码: Product Code:4t46t6vydkvsxekkvf3fjnpzy5wbuhphqz serial Number:601769 password:xs374ca 在...
  • sundacheng1989
  • sundacheng1989
  • 2016年10月20日 17:26
  • 3005

PL/SQL练习题一(基础)

Display the employee records who joins the department before their manager? SELECT emp1.* FROM EMPLO...
  • OnlyQi
  • OnlyQi
  • 2016年04月09日 11:47
  • 1813

PL/SQL简单使用——导入、导出数据表

使用PL/SQL导出、导入表在使用PL/SQL操作oracle数据库时,经常使用的一个操作就是将自己写的数据表导出,或者想把他人的数据表导入到自己的数据库中。虽然是很简单的操作,但自己之前一直出错,所...
  • suifengbanshui
  • suifengbanshui
  • 2017年05月18日 08:30
  • 4618

PL/SQL的函数定义和使用

函数的结构 声明部分:包括类型、变量、游标 执行部分:完成功能而编写的SQL语句或则是PL/SQL代码块 异常处理部分 创建函数 CREATE [ OR REPLACE] FUNCTION ...
  • xuenandong
  • xuenandong
  • 2012年04月10日 14:08
  • 1219

在pl/sql中使用exp/imp工具实现oracle数据导出/导入

在pl/sql中使用exp/imp工具实现oracle数据导出/导入2006年11月19日 星期日 10:59 Oracle数据导...
  • wangyun71
  • wangyun71
  • 2006年12月07日 10:09
  • 1639

PL/SQL Developer 汉化中文图文教程

《 汉化PL/SQL Developer 图文教程 》 准备PL/SQL Developer 的安装包: 可以到这儿去下载 PL_SQL Developer_8.0 CSDN下载 ,下载完成...
  • Hello_World_QWP
  • Hello_World_QWP
  • 2017年12月13日 11:54
  • 315

PL/SQL 格式化指南 (PL/SQL Formatting Guide)

http://bianxq.iteye.com/blog/537478 最近一直在修改以前同事写的Oracle存储过程,由于编码不规范,修改起来相当费神,于是乎,翻译了这篇 PL/SQL Forma...
  • orion61
  • orion61
  • 2011年08月01日 11:08
  • 597
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PL/SQL基本知识
举报原因:
原因补充:

(最多只允许输入30个字)