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…
39.1.1 使用 PL/pgSQL的好处 SQL是 PostgreSQL和其他大多数关系型数据库作为查询语言而使用的语言.它可移植,并容易学习.但是SQL语句必须被数据库服务器逐条地执行. 这意味着你的客户应用必须向数据库发送每一条查询,等待它被处理,接收并处理结果,进行一些计算,然后再依次类推送出更多的查询.所有这些导致进程间通信,如果你的客户程序和数据库服务器位于不同的机器上,网络负载也会大量增加. 使用 PL/pgSQL, 你可以把一个计算块和一系列的数据库服务器内部的查询组合到一起,这…
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的单位:块. 一个块中可以嵌套…
 本系列文章由@二货梦想家张程 所写,转载请注明出处. 作者:ZeeCoder  微博链接:http://weibo.com/zc463717263 我的邮箱:michealfloyd@126.com   欢迎大家发邮件来和我交流编程心得 you are what you read!与大家共勉! -------------------------------------------------分割线:ZeeCoder--------------------------------------…
-- 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…
好吧,昨晚上研究了switch()的底层实现原理--发现它并不是一般C语言教科书上那样所言,当然,这对于本身就非常熟悉汇编的同学来说,是小菜一碟.世界上,很多事情是巧合与必然的结合体,没有无缘无故的爱,也没有无缘无故的恨---我为啥会被一个switch给挡出去路?这个switch在contiki中又有何重要作用?且不回答这个问题,先来看看如何使用昨天晚上展开的PROCESS_YIELD()宏. 说明:这里就只是贴打印信息,分析打印信息了,不再贴分析过程中的代码了. 一,修改自己的hello-wo…
一. 迭代器 在前面的笔记中,已经提到过迭代器(和可迭代),这里会对此进行深入讨论.只讨论一个特殊方法---__iter__,这个方法是迭代器规则的基础. 1.1 迭代器规则 迭代的意思是重复做一些事情很多次,到现在为止只是在for循环中对序列和字典进行迭代,但实际上也能对其他的对象进行迭代:实现__iter__方法的对象. __iter__方法返回一个迭代器,所谓迭代器就是具有next方法(这个方法在调用时不需要任何参数)的对象.在调用next方法时,迭代器会返回它的下一个值.如果next方法…
注释 单行--多行 一.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…