PL/pgSQL学习笔记之一】的更多相关文章

39.1.1 使用 PL/pgSQL的好处 SQL是 PostgreSQL和其他大多数关系型数据库作为查询语言而使用的语言.它可移植,并容易学习.但是SQL语句必须被数据库服务器逐条地执行. 这意味着你的客户应用必须向数据库发送每一条查询,等待它被处理,接收并处理结果,进行一些计算,然后再依次类推送出更多的查询.所有这些导致进程间通信,如果你的客户程序和数据库服务器位于不同的机器上,网络负载也会大量增加. 使用 PL/pgSQL, 你可以把一个计算块和一系列的数据库服务器内部的查询组合到一起,这…
http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html 另外一种声明 PL/pgSQL 函数的方法是使用 returns table,例如: CREATE FUNCTION extended_sales(p_itemno int) RETURNS TABLE(quantity int, total numeric) AS $$ BEGIN RETURN QUERY SELECT quantity, quantity…
http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html 如果一个PL/pgSQL函数声明了输出参数,输出参数被赋予$n名称和可选的别名,和正常输入参数的作法一样.输出参数是一个从NULL开始的变量:它将被在函数的执行过程中被赋值.此参数的最后的值就是函数的返回值.例如,the sales-tax 例子可以这样实现: 例子: CREATE FUNCTION sales_tax(subtotal real, OUT ta…
http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html 39.3. 声明 块中使用的所有的变量必须在块的声明节中进行声明.(唯一的例外是,子一个For循环中,在一个整数范围内轮询的循环变量被自动认为是整型变量,而只For循环中,轮询一个游标的变量被自动声明为记录变量.) PL/pgSQL 变量可以是任何SQL数据类型,如integer,varchar,还有char等. 下面是变量声明的一些个例子: user_id i…
http://www.postgresql.org/docs/9.1/static/plpgsql-structure.html 39.2. PL/pgSQL 的结构 PL/pgSQL是一种块式结构的语言.完整的函数定义必须是一个块.一个块的定义形式如下: [ <<label>> ] [ DECLARE declarations ] BEGIN statements END [ label ]; 在块中,每一个声明或语句都以分号结束.一个块出现在另外一个块中的时候,必须接 END:…
http://www.postgresql.org/docs/9.1/static/plpgsql-overview.html 39.1.2. Supported Argument and Result Data Types 用PL/pgSQL写的函数可以接受标量类型或者服务器支持的数组类型作为参数,它们可以返回前述的数据类型的结果.它们也能接受或返回通过名称指定的复杂类型(rwo type).也可以声明一个PL/pgSQL函数返回 record类型,此时返回的结果是一个row type,它的列…
开始 资料来源:http://www.postgresql.org/docs/9.1/static/plpgsql-overview.html 39.1 概要: PL/pgSQL是一种可载入的过程语言,它的设计目标: 可以用来创建函数和触发器过程, 给SQL语言提供控制结构, 能够完成复杂计算, 能继承所有用户定义的类型.函数和操作符, 定义为被服务器所信任, 易于使用. 使用PL/pgSQL创建的话函数可以像内置的函数一样被使用.例如,可以创建一个复杂的条件计算函数,而后在索引表达式中使用它,…
http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html 39.3.4. Row 类型 name table_name%ROWTYPE; name composite_type_name; 一个复合类型被称为row变量(或row-类型变量).这样的变量可以保持一整行当select或for 查询的结果,该查询的列集合正好匹配声明的变量的数据类型.此行值得单个域值可以通过通常的点引用来访问,例如:rowvar.field.…
http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html 39.3.3. 类型拷贝 variable%TYPE %TYPE提供了变量或者表列的数据类型.你可以用这个来声明将持有这些数据库值得变量.例如,假定在你的users表中你有一列,名称为 user_id.为了定义一个和users.user_id拥有同样数据类型的数据类型,你可以写: user_id users.user_id%TYPE; 通过使用%TYPE,你不需…
http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html 39.3.2. ALIAS newname ALIAS FOR oldname; ALIAS 语法比前面章节中提到的更为广泛使用:你可以给任何变量声明别名,而不仅仅是针对函数参数.在实践中用得比较多的是给变量赋予一个另外的预先定义好的名字,如在一个触发器过程中的NEW和OLD. 例如: DECLARE prior ALIAS FOR old; updated A…
http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html 39.3.1. 声明函数参数 传递给函数的参数被用 $1.$2等依次类推的标志符命名.作为可选项,为了提高可读性,可以为$n 参数名称定义别名.此后,既可以用数字标志符也可以用别名来指代参数值. 有两种方式来创建别名.推荐使用的方法是在CREATE FUNCTION命令你个中给参数一个名字,例如: CREATE FUNCTION sales_tax(subtot…
ORALCE  PL/SQL学习笔记 详情见自己电脑的备份数据资料…
自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家批评指正. PL/SQL定义:PL/SQL是由Oracle开发,专门用于Oracle的程序设计语言. PL---Procedural Language. SQL—Structure QueryLanguage.PL/SQL包括过程化语句和SQL语句     PL/SQL的单位:块. 一个块中可以嵌套…
-- 1. 使用一个变量 declare -- Local variables here v_name ); begin -- Test statements here select t.user_name into v_name from pay_mer_order t ; dbms_output.put_line(v_name); end; -- 2. 使用多个变量 declare -- Local variables here v_name ); v_trans_no ); v_app_c…
注释 单行--多行 一.declare一般用于做变量的申明.begin 程序体开始执行  end; 程序体结束exception .. dbms_output.put_line('绝对值'||v_abs);输出语句 执行begin 之前必须先set serveroutput on;要不打印不出来 pl/sql约定俗成变量以v开头如 v_name  example:declare v_name varchar2(20)    -----变量类型为变长字符begin v_name:='myname'…
PL/SQL语句可以在Oracle客户端的 SQL窗口或者 command  窗口中运行 在SQL窗口中运行步骤同 SQL语句 在command  窗口中运行的步骤如下: 1)File—new command window,出现下图 2)输入命令:set serveroutput on    ,回车执行 作用:开启输出服务 3)输入命令:ed   ,回车执行 作用:打开PL/SQL文本编辑器,可以在此文本编辑器中写PL/SQL语句 4)输入命令:/   ,回车执行 作用:执行PL/SQL语句 1…
一:程序单元组成 一个PL/SQL程序单元主要包括三部分: 声明与定义部分:声明变量.常量.类型等:定义过程.函数等: 执行部分:执行PL/SQL语句:调用过程.参数:处理游标等: 异常处理部分:处理程序单元出现的异常. 二:格式 DECLARE 声明变量.常量.类型: 定义过程.函数: .... BEGIN 执行程序语句: 调用过程.函数: 处理游标: .... EXCEPTION <exception handling> END; 三:例子 DECLARE a number; b numb…
一:PL/SQL时间相关类型 PL/SQL提供两个和日期时间相关的数据类型: 日期时间(Datetime)数据类型 时间间隔类型 二:日期时间类型 datetime数据类型有: DATE TIMESTAMP TIMESTAMP WITH TIME ZONE TIMESTAMP WITH LOCAL TIME ZONE 三:时间间隔类型 INTERVAL YEAR TO MONTH INTERVAL DAY TO SECOND 四:日期时间类型 和  时间间隔类型  的可能字段 字段名称 有效日期…
一:包 包是由一组相关的函数,过程,变量,游标等PL/SQL程序设计元素的组合而成的一个PL/SQL程序单元,相当于Java中的类. 包的主要作用是封装:把相同或相似的东西归类,方便维护和管理,提高开发效率,提高性能. 二:包的开发 包的开发包括两部分:包的声明定义  和  包的主体开发. 包的声明定义:声明  类型,变量,常量,异常,游标,函数,过程(声明,但不实现!) ,在包的声明部分定义的变量是公有变量(public),可以在包外通过  包名.变量名  引用. 包的主体开发:在包的主体对…
一:PL/SQL集合 集合是一个有序且存有相同的类型数据的数据结构. PL/SQL提供了三种集合类型: 索引表(关联数组) 嵌套表 数组 二:索引表:一个索引表(也叫关联数组)是一组键 - 值对.每个键是唯一的,并且用于定位对应的值.键可以是整数或字符串.[其实就是 Map类型] 1)创建索引表 TYPE type_name IS TABLE OF element_type [NOT NULL] INDEX BY subscript_type; //定义索引表类型:指明值类型和键类型 table…
一:异常 程序执行过程中出现错误情况被称为异常,主要有两种类型的异常: 系统定义的异常 用户定义的异常 二:系统定义的异常 Exception Oracle Error SQLCODE 描述 ACCESS_INTO_NULL 06530 -6530 为空对象赋值时引发 CASE_NOT_FOUND 06592 -6592 没有相应的选择语句时引发异常 COLLECTION_IS_NULL 06531 -6531 数组.集合未初始化却被使用时引发异常 DUP_VAL_ON_INDEX 00001…
一:游标 Oracle会创建一个上下文区域,用于处理SQL语句,其中包含需要处理的语句.处理结果等等. 游标指向这一上下文的区域. PL/SQL通过控制游标在上下文区域移动,来获取SQL语句的结果信息. 有两种类型的游标: 隐式游标 显式游标 二:隐式游标 对于DML操作(INSERT.UPDATE.DELETE)语句,Oracle会自动创建隐式游标指向该语句的上下文区域. 对于隐式游标,我们无法通过游标名来显式操作它,但是可以通过一些通用的属性来获取到最近的隐式游标指向的上下文区域中的信息,主…
一:记录 记录是一种高可以容纳不同数据类型的数据的数据结构. PL/SQL可以处理记录的以下几种类型: 基于数据表 基于游标的记录 用户自定义的记录 二:使用 %ROWTYPE属性 创建基于表格或基于游标的记录[基于表.游标的记录  其实就是  数据表的一行]    1)基于表的记录 DECLARE customer_rec customers%rowtype;//创建基于表的记录 BEGIN SELECT * into customer_rec //把唯一的检索结果存到记录 FROM cust…
一:PL/SQL的两种子程序 子程序:子程序是执行一个特定功能.任务的程序模块.PL/SQL中有两种子程序:函数  和  过程. 函数:主要用于计算并返回一个值. 过程:没有直接返回值,主要用于执行操作. [因此,当需要有返回值时,记得用函数,不需要返回值的,则用存储过程] 二:创建存储过程 CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN | OUT | IN OUT] type [, ...])] {IS |…
一:变量 1:变量声明与初始化 variable_name datatype(约束) [:= | DEFAULT 初始值] 如: sales , ); name ); a ; greetings ) DEFAULT 'Have a Good Day'; 2:变量的使用 通过变量名来使用. 3:用变量接收SQL语句结果 SELECT 列1,列2... INTO 变量1,变量2... 二:常量 1:常量声明 常量使用CONSTANT关键字声明.它需要一个初始值,并且不允许被改变该值.如: PI CO…
一:标量 标量 即 基本数据类型,主要有4种:数值.字符.布尔类型.日期时间. 1:数值类型 数据类型 描述 PLS_INTEGER 通过2,147,483,647到-2147483648范围内有符号整数,以32位表示 BINARY_INTEGER 通过2,147,483,647到-2147483648范围内的有符号整数,以32位表示 BINARY_FLOAT 单精度IEEE 754格式的浮点数 BINARY_DOUBLE 双精度IEEE 754格式的浮点数 NUMBER(prec, scale…
一:PL/SQL程序块 PL/SQL是一种块结构的语言,一个PL/SQL程序就是一个 代码逻辑块. PL/SQL程序由三部分构成: 1 声明 部分 使用关键字DECLARE开头,它是一个可选的部分,用于声明与赋初值在该程序中使用的  所有变量,游标,子程序,和其他元素. 2 可执行命令 部分 使用关键字BEGIN和END包裹,必须有.定义了一系列 PL/SQL语句  . 3 异常处理 部分 使用关键字EXCEPTION,可选,用于处理可执行命令部分捕获的异常. 二:基本格式 DECLARE <d…
Procedure Language/Structure query Language 一.关于语言学习 1.数据类型 2.语法   通过例子来学习很快就能明白 set serverputout on: begin dbms_output.put_line(‘HelloWorld!’): end: 二.结构(declare(可选).begin.exception(可选).end) 1.declare例子 declare v_name varchar2(20); begin v_name := '…
ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数. 存储函数:有返回值,创建完成后,通过select function() from dual;执行 存储过程:由于没有返回值,创建完成后,不能使用select语句,只能使用pl/sql块执行 一.存储函数 1.存储函数语法格式 CREATE [OR REPLACE] FUNCTION function_name [ (argment [ { IN | IN OUT } ] Type, a…
在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现. 为了处理 SQL 语句, ORACLE 必须分配一片叫上下文( context area )的区域来处理所必需的信息,其中包括要处理的行的数目,一个指向语句被分析以后的表示形式的指针以及查询的活动集(active set). 游标是一个指向上下文的句柄( handle)或指针.通过游标, PL/SQL 可以控制上下文区和处理语句时上下文区会发生些什么事情. 1.处理显示游标 处理显示游标有4个步骤: (1)定义游标: CURS…