首页 GBase-8s数据库平台PLSQL语法手册

GBase-8s数据库平台PLSQL语法手册

举报
开通vip

GBase-8s数据库平台PLSQL语法手册GBase8sPL/SQL手册南大通用数据技术股份有限公司IGBase8s数据库平台PL/SQL手册GBase8sPL/SQL手册南大通用数据技术股份有限公司III目录PL/SQL语法指南.........................................................................................................................-1-1.PL/SQL基础...................................

GBase-8s数据库平台PLSQL语法手册
GBase8sPL/SQL手册南大通用数据技术股份有限公司IGBase8s数据库平台PL/SQL手册GBase8sPL/SQL手册南大通用数据技术股份有限公司III目录PL/SQL语法指南.........................................................................................................................-1-1.PL/SQL基础.........................................................................................................................-1-1.1.词法单元..............................................................................................................-1-1.1.1.分隔符(Delimiters).....................................................................................-1-1.1.2.标识符(Identifiers).....................................................................................-2-1.1.3.文字(Literals)..............................................................................................-4-1.1.4.注释(Comments)........................................................................................-5-1.2.声明......................................................................................................................-6-1.2.1.变量..............................................................................................................-6-1.2.2.常量..............................................................................................................-7-1.2.3.常量和变量的初始化..................................................................................-7-1.2.4.使用NOTNULL............................................................................................-8-1.2.5.使用%TYPE属性.........................................................................................-9-1.2.6.使用%ROWTYPE属性..............................................................................-10-1.2.7.使用限制....................................................................................................-10-1.2.8.初始化为空值的变量................................................................................-10-1.2.9.具有初始值的变量和常量声明................................................................-11-1.2.10.变量默认初始化为NULL..........................................................................-11-1.2.11.声明与列相同类型的变量........................................................................-11-1.2.12.将相同类型的变量声明为另一个变量....................................................-12-1.3.引用标识符........................................................................................................-12-1.4.命名约定............................................................................................................-12-1.4.1.作用域........................................................................................................-12-1.4.2.大小写敏感................................................................................................-13-1.4.3.名称解析....................................................................................................-13-1.5.标识符范围........................................................................................................-13-1.5.1.标识符的范围和可见性............................................................................-15-1.5.2.带有块标签的重新声明的全局标识符....................................................-16-1.5.3.具有子程序名的限定标识符....................................................................-17-1.5.4.相同的范围内的重复标识符....................................................................-18-1.5.5.在不同的单元中声明相同的标识符........................................................-18-1.5.6.在相同的范围内使用相同名称的标签和子程序....................................-19-GBase8sPL/SQL手册南大通用数据技术股份有限公司IV1.5.7.带有多个和重复标签的块........................................................................-19-1.6.给变量赋值........................................................................................................-20-1.6.1.用赋值语句给变量赋值............................................................................-20-1.6.2.用SELECTINTO语句给变量赋值.............................................................-21-1.6.3.INOUT子程序参数给变量赋值...............................................................-21-1.6.4.给BOOLEAN变量赋值..............................................................................-22-1.7.表达式................................................................................................................-22-1.7.1.连接运算符................................................................................................-23-1.7.2.操作优先级................................................................................................-23-1.7.3.逻辑运算符................................................................................................-25-1.7.4.短路计算....................................................................................................-32-1.7.5.比较运算符................................................................................................-32-1.7.6.布尔表达式................................................................................................-35-1.7.7.Case表达式................................................................................................-36-2.数据类型............................................................................................................................-39-2.1.CHAR和VARCHAR2空白填充差异..................................................................-39-2.2.输出BOOLEAN值..............................................................................................-40-2.3.SQL语句通过BOOLEAN函数调用PL/SQL函数...............................................-40-2.4.PLS_INTEGER计算引发溢出异常....................................................................-41-2.5.防止PLS_INTEGER溢出....................................................................................-41-2.6.违反SIMPLE_INTEGER子类型的约束.............................................................-42-3.控制语句............................................................................................................................-42-3.1.条件控制............................................................................................................-42-3.1.1.IFTHEN语句.............................................................................................-43-3.1.2.IFTHENELSE语句....................................................................................-43-3.1.3.嵌套IFTHENELSE语句............................................................................-44-3.1.4.IFTHENELSIF语句...................................................................................-45-3.1.5.IFTHENELSIF语句模拟简单的CASE语句..............................................-45-3.1.6.简单的CASE语句.......................................................................................-46-3.1.7.搜索CASE语句...........................................................................................-46-3.1.8.在CASE语句中EXCEPTION替代ELSE子句..............................................-47-3.2.循环控制............................................................................................................-47-3.2.1.循环与退出循环........................................................................................-47-3.2.2.基本LOOP语句中的CONTINUE语句.......................................................-48-GBase8sPL/SQL手册南大通用数据技术股份有限公司V3.2.3.基本LOOP语句中的CONTINUEWHEN语句...........................................-49-3.2.4.FORLOOP语句..........................................................................................-49-3.2.5.反向FORLOOP语句..................................................................................-50-3.2.6.FORLOOP语句中模拟STEP子句.............................................................-51-3.2.7.FORLOOP语句尝试更改索引值..............................................................-51-3.2.8.FORLOOP语句索引的外部语句引用......................................................-51-3.2.9.FORLOOP语句索引与变量名称相同......................................................-52-3.2.10.FORLOOP语句引用与索引相同名称的变量..........................................-52-3.2.11.具有相同的索引名称的嵌套FORLOOP语句..........................................-53-3.2.12.FORLOOP语句边界..................................................................................-53-3.2.13.在运行时指定FORLOOP语句边界..........................................................-54-3.2.14.在FORLOOP语句中的EXITWHEN语句.................................................-54-3.2.15.在内部FORLOOP语句中的EXITWHEN语句.........................................-54-3.2.16.在内部FORLOOP语句中的CONTINUEWHEN语句...............................-55-3.2.17.WHILELOOP语句.....................................................................................-55-3.3.顺序控制............................................................................................................-56-3.3.1.GOTO语句..................................................................................................-56-3.3.2.错误的标签位置(IncorrectLabelPlacement)...................................-57-3.3.3.GOTO语句转到LabeledNULL语句....................................................-57-3.3.4.GOTO语句将控制转移到封闭块..............................................................-57-3.3.5.GOTO语句不能将控件转换为IF语句......................................................-58-3.3.6.NULL语句ShowingNoAction..............................................................-58-3.3.7.在子程序创建期间,NULL语句作为占位符..........................................-59-3.3.8.简单CASE语句的ELSE子句中的NULL语句............................................-59-4.集合与 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 ........................................................................................................................-60-4.1.集合....................................................................................................................-60-4.1.1.集合的类型................................................................................................-60-4.1.2.集合类型定义和变量声明........................................................................-61-4.1.3.初始化........................................................................................................-63-4.1.4.引用............................................................................................................-64-4.1.5.赋值............................................................................................................-65-4.1.6.比较............................................................................................................-66-4.1.7.集合的方法................................................................................................-67-4.2.记录....................................................................................................................-86-GBase8sPL/SQL手册南大通用数据技术股份有限公司VI4.2.1.类型定义和变量声明................................................................................-86-4.2.2.使用%ROWTYPE......................................................................................-86-4.3.引用....................................................................................................................-88-4.4.初始化................................................................................................................-88-4.5.赋值....................................................................................................................-89-4.6.比较....................................................................................................................-91-4.7.操作记录............................................................................................................-91-5.静态SQL.............................................................................................................................-93-5.1.静态SQL介绍.....................................................................................................-93-5.1.1.简单的一个例子........................................................................................-93-5.1.2.伪列............................................................................................................-94-5.2.游标概述............................................................................................................-95-5.2.1.隐式游标....................................................................................................-95-5.2.2.显式游标....................................................................................................-97-5.3.处理结果集......................................................................................................-104-5.3.1.SELECTINTO语句处理结果集...............................................................-105-5.3.2.FORLOOP语句处理结果集....................................................................-106-5.3.3.OPEN-FETCH-CLOSE..............................................................................-108-5.3.4.处理带有子查询的结果集......................................................................-108-5.4.游标变量..........................................................................................................-110-5.4.1.创建游标变量..........................................................................................-110-5.4.2.OpenandClose.......................................................................................-111-5.4.3.Fetch........................................................................................................-112-5.4.4.游标变量赋值..........................................................................................-113-5.4.5.游标查询中的变量..................................................................................-114-5.4.6.游标变量的属性......................................................................................-116-5.4.7.子函数的参数..........................................................................................-116-6.动态SQL...........................................................................................................................-117-6.1.使用EXECUTEIMMEDIATE...........................................................................-117-6.2.使用游标语法..................................................................................................-119-7.错误处理..........................................................................................................................-119-7.1.PL/SQL运行时的错误处理概述.....................................................................-119-7.2.预定义异常......................................................................................................-120-7.3.自定义异常......................................................................................................-121-GBase8sPL/SQL手册南大通用数据技术股份有限公司VII7.3.1.声明异常..................................................................................................-121-7.3.2.PL/SQL异常的作用域规则.....................................................................-122-7.3.3.定义自己的错误消息..............................................................................-124-7.4.如何抛出异常..................................................................................................-125-7.5.异常如何传播..................................................................................................-125-7.6.重新抛出异常..................................................................................................-127-7.7.处理抛出的异常..............................................................................................-128-7.7.1.在声明部分抛出的异常..........................................................................-129-7.7.2.处理在异常处理程序中抛出的异常......................................................-130-7.7.3.GOTO语句和异常处理............................................................................-130-GBase8sPL/SQL手册南大通用数据技术股份有限公司-1-PL/SQL语法指南本文描述GBase8sPL/SQL语法,包括PL/SQL支持的数据类型,变量声明、赋值语法,顺序、选择、循环分支语法,集合、记录对象的使用,静态SQL、动态SQL语法以及错误处理等。GBase8s当前版本所支持的PL/SQL语法与Oracle完全一致,原Oracle存储过程可直接迁移,当前版本支持之外的语法,后续会不断完善。本资料主要针对以下用户:l数据库用户l数据库管理员l数据库安全性管理员l数据库应用程序员本文档假设您具有以下背景:l具有计算机、操作系统和操作系统提供的实用程序的工作知识l使用过关系数据库或接触过数据库概念l具有一些计算机编程经验1.PL/SQL基础1.1.词法单元它有自己特定的元素,如下所示:l分隔符(Delimiters)l标识符(Identifiers)l文字(Literals)l注释(Comments)1.1.1.分隔符(Delimiters)分隔符用于标记词法元素之间的分割,可以是一个字符,也可以是由多个字符组合组成的,都有特殊的意义,例如“+”。DelimiterMeaningGBase8sPL/SQL手册南大通用数据技术股份有限公司-2-+Additionoperator:=Assignmentoperator=>Associationoperator%Attributeindicator'Characterstringdelimiter.Componentindicator||Concatenationoperator/Divisionoperator**Exponentiationoperator(Expressionorlistdelimiter(begin))Expressionorlistdelimiter(end):Hostvariableindicator,Itemseparator<>Labeldelimiter(end)/*Multilinecommentdelimiter(begin)*/Multilinecommentdelimiter(end)*Multiplicationoperator"Quotedidentifierdelimiter..Rangeoperator=Relationaloperator(equal)<>Relationaloperator(notequal)!=Relationaloperator(notequal)~=Relationaloperator(notequal)^=Relationaloperator(notequal)Relationaloperator(greaterthan)<=Relationaloperator(lessthanorequal)>=Relationaloperator(greaterthanorequal)@Remoteaccessindicator--Single-linecommentindicator;Statementterminator-Subtractionornegationoperator1.1.2.标识符(Identifiers)GBase8sPL/SQL手册南大通用数据技术股份有限公司-3-标识符用于命名PL/SQL语法单元,包括:l常量l变量l异常l游标l关键字l标签l保留字l类型标识符中的每个字符都是有意义的,例如lastname和last_name是不同的。必须通过一个或多个空白或者一个标点符号来分隔相邻的标识符。标识符的大小写是不敏感的。例如lastname、Lastname、LASTNAME是相同的。1.1.2.1保留字和关键字PL/SQL中有一些具有特殊意义的标识符,被称作保留字和关键字。不能使用保留字做为用户定义的标识符。可以用关键字作为用户定义的标识符。1.1.2.2用户自定义保留字PL/SQL标识符的长度限制,请参照GBase8s语法。用户标识符:l以字符开头l可以包含字母、数字和$,#,_字符l不能为保留字例如以下是可接受的标识符:Xt2phone#credit_limitLastNameoracle$numbermoney$$$treeSN##try_again_PL/SQL不容许在标识符中使用分隔符,如下所示:mine&yours--ampersand(&)isnotallowedGBase8sPL/SQL手册南大通用数据技术股份有限公司-4-debit-amount--hyphen(-)isnotallowedon/off--slash(/)isnotalloweduserid--spaceisnotallowedPL/SQL对标识符不区分大小写,PL/SQL认为下面命名是相同的。例子lastnameLastNameLASTNAME每个字符都是有意义的。例如,PL/SQL考虑以下是不同的。例子。lastnamelast_name为了让PL/SQL程序更加易读,取名要有意义。例如cost_per_thousand---易懂cpt---难懂1.1.3.文字(Literals)文字就是一个数字、字符、字符串、或布尔值。它本身是数据不是对数据的引用。文字也不是用标识符来标识,当然也不是计算出来的。例,123,’abc’是字面量,而1+2不是。变量分为数值变量、字符变量、字符串变量和布尔变量。l字符串和字符文字是大小敏感的l空白字符也被考虑l‘0’和‘9’不同于数值0-9,然而可系统以将他们转换为整数,所以可以应用于算术表达式中l有0个字符的文字的值为NULL,成为空字符串,他与BOOLEAN的NULL是不同的1.1.3.1数值算术表达式中可以使用两种数字变量:整数和浮点数,可以参照GBase8s语法。l整数:0306-140+32767l浮点数6.66670.0-12.03.14159+8300.000.525.01.1.3.2字符字符变量是由单引号(')括起的单个字符。字符变量包括PL/SQL字符集中的所有可打印字符:字母,数字、空格和特殊符号。具体可以参照GBase8s语法。GBase8sPL/SQL手册南大通用数据技术股份有限公司-5-'Z''%''7''''z''('PL/SQL在字符变量中区分大小写。例如,PL/SQL的变量'Z'和'z'是不同的。另外,字符变量'0'…'9'不是等同于整型变量,但可以在算术表达式中使用,因为它们隐式转换为整数。1.1.3.3字符串字符串由零个或多个字符组成的序列,用单引号括起来,可以参照GBase8s语法。全部除空字符串('')外的字符串文本具有数据类型CHAR。'Hello,world!''XYZCorporation''10-NOV-91''Hesaid"Lifeislikelickinghoneyfromathorn."''$1,000,000'PL/SQL在字符串变量中区分大小写。例如,'baker'和'Baker'不同的。要表示字符串中的撇号,可以写两个单引号,即不等于写双引号:'I''mastring,you''reastring.'1.1.3.4布尔布尔变量是预定义的值TRUE、FALSE和NULL。NULL代表缺少、未知或不适用的值。记住,布尔文字是值,而不是字符串。1.1.3.5DateandTime变量根据数据类型的不同,日期时间文本有多种格式,可以参照GBase8s语法。1.1.4.注释(Comments)PL/SQL编译器忽略注释。向程序添加注释可以增强可读性。通常,使用注释来描述每个代码段的用途,也可以将代码通过注释禁用。1.1.4.1单行注释开始于--,一直到行为结束,例子如下所示:DECLAREhowmanyNUMBER;num_tablesNUMBER;BEGIN--BeginprocessingGBase8sPL/SQL手册南大通用数据技术股份有限公司-6-SELECTCOUNT(*)INTOhowmanyFROMUSER_OBJECTSWHEREOBJECT_TYPE='TABLE';--Checknumberoftablesnum_tables:=howmany;--ComputesomeothervalueEND;1.1.4.2多行注释注释可以用多行,/*注释内容*/,例子如下所示:DECLAREsome_conditionBOOLEAN;piNUMBER:=3.1415926;radiusNUMBER:=15;areaNUMBER;BEGIN/*Performsomesimpletestsandassignments*/IF2+2=4THENsome_condition:=TRUE;/*WeexpectthisTHENtoalwaysbeperformed*/ENDIF;/*Thefollowinglinecomputestheareaofacircleusingpi,whichistheratiobetweenthecircumferenceanddiameter.Aftertheareaiscomputed,theresultisdisplayed.*/area:=pi*radius*2;DBMS_OUTPUT.PUT_LINE('Theareais:'||TO_CHAR(area));END;1.2.声明PL/SQL程序将值存储在变量和常量中。当程序执行时变量的值可以更改,但常量的值不能更改。声明为值分配存储空间,指定其数据类型,并命名存储位置,以便后续可以引用它。1.2.1.变量变量声明需要指定变量名称和数据类型。对于大多数据类型,声明变量也可以指定初始值。变量名称必须是有效的用户定义标识符。数据类型可以是任何PL/SQL数据类型。数据类型可以是简单地(SCALAR),也可以是复合的。赋值运算符后面的表达式可以任意复杂,并且可以引用以前初始化的变量。每次执行程序时,都会初始化变量。例如:DECLAREGBase8sPL/SQL手册南大通用数据技术股份有限公司-7-birthdayDATE;emp_countSMALLINT:=0;piREAL:=3.14159;radiusREAL:=1;areaREAL:=pi*radius*2;BEGINNULL;END;例如:DECLAREpart_numberNUMBER(6);--SQLdatatypepart_nameVARCHAR2(20);--SQLdatatypein_stockBOOLEAN;--PL/SQL-onlydatatypepart_priceNUMBER(6,2);--SQLdatatypepart_descriptionVARCHAR2(50);--SQLdatatypeBEGINNULL;END;1.2.2.常量声明常量时,需要将关键字CONSTANT放在类型说明符之前。常量必须在其声明中初始化。这个下面的例子声明命名了实数类型的常量,并指定了一个不可更改的值5000给常数。DECLAREcredit_limitCONSTANTREAL:=5000.00;max_days_in_yearCONSTANTINTEGER:=
本文档为【GBase-8s数据库平台PLSQL语法手册】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
IT人
暂无简介~
格式:pdf
大小:1MB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2021-03-15
浏览量:99