动态语句-执行动态查询语句
介绍执行动态查询语句。GaussDB200提供两种方式:使用EXECUTEIMMEDIATE、OPENFOR实现动态查询。前者通过动态执行SELECT语句,后者结合了游标的使用。当需要将查询的结果保存在一个数据集用于提取时,可使用OPENFOR实现动态查询。EXECUTEIMMEDIATE语法图请参
基本语句-赋值语句
语法给变量赋值的语法请参见图1。图1assignment_value::=对以上语法格式的解释如下:variable_name,为变量名。value,可以是值或表达式。值value的类型需要和变量variable_name的类型兼容才能正确赋值。示例DECLAREemp_idINTEGER:=778
基本语句-定义变量
介绍PL/SQL中变量的声明,以及该变量在代码中的作用域。变量声明变量声明语法请参见图1。图1declare_variable::=对以上语法格式的解释如下:variable_name,为变量名。type,为变量类型。value,是该变量的初始值(如果不给定初始值,则初始为NULL)。value也可
声明语法-子程序
存储在数据库中的存储过程、函数和操作符及高级包等。当在数据库上建立好后,可以在其他程序中调用它们。
声明语法-匿名块
匿名块(AnonymousBlock)一般用于不频繁执行的脚本或不重复进行的活动。它们在一个会话中执行,并不被存储。语法匿名块的语法参见图1。图1anonymous_block::=对以上语法图的解释如下:匿名块程序实施部分,以BEGIN语句开始,以END语句停顿,以一个分号结束。输入“/”按回车执
声明语法-基本结构
结构PL/SQL块中可以包含子块,子块可以位于PL/SQL中任何部分。PL/SQL块的结构如下:声明部分:声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数。DECLARE说明:不涉及变量声明时声明部分可以没有。对匿名块来说,没有变量声明部分时,可以省去DECLARE关键字。对存储过程
数组和record-record
record类型的变量创建一个record变量的方式:定义一个record类型,然后使用该类型来声明一个变量。语法record类型的语法参见图1。图1record类型的语法对以上语法格式的解释如下:record_type:声明的类型名称。field:record类型中的成员名称。datatype:r
数组和record-数组
数组类型的使用在使用数组之前,需要自定义一个数组类型。在存储过程中紧跟AS关键字后面定义数组类型。定义方法为:TYPEarray_typeISVARRAY(size)OFdata_type;其中:array_type:要定义的数组类型名。VARRAY:表示要定义的数组类型。size:取值为正整数,表
存储过程-数据类型转换
数据库中允许有些数据类型进行隐式类型转换(赋值、函数调用的参数等),有些数据类型间不允许进行隐式数据类型转换,可尝试使用GaussDB200提供的类型转换函数,例如CAST进行数据类型强转。GaussDB200数据库常见的隐式类型转换,请参见表1。GaussDB200支持的DATE的效限范围是:公元
存储过程-数据类型
数据类型是一组值的集合以及定义在这个值集上的一组操作。GaussDB200数据库是由表的集合组成的,而各表中的列定义了该表,每一列都属于一种数据类型,GaussDB200根据数据类型有相应函数对其内容进行操作,例如GaussDB200可对数值型数据进行加、减、乘、除操作。
存储过程-存储过程
商业规则和业务逻辑可以通过程序存储在GaussDB200中,这个程序就是存储过程。存储过程是SQL,PL/SQL,Java语句的组合。存储过程使执行商业规则的代码可以从应用程序中移动到数据库。从而,代码存储一次能够被多个程序使用。存储过程的创建及调用办法请参考CREATEPROCEDURE。PL/p
开发者指南-存储过程
存储过程存储过程数据类型数据类型转换数组和record声明语法基本语句动态语句控制语句其他语句游标高级包调试
用户自定义函数-PL/pgSQL语言函数
PL/pgSQL类似于Oracle的PL/SQL,是一种可载入的过程语言。用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可以创建复杂条件的计算函数并且后面用它们来定义操作符或把它们用于索引表达式。SQL被大多数数据库用作查询语言。它是可移植的并且容易学习。但是每一个SQL语
用户自定义函数-PL/Java语言函数
使用GaussDB200数据库的PL/Java函数,用户可以使用自己喜欢的JavaIDE编写Java方法,并将包含这些方法的jar文件安装到GaussDB200数据库中,然后使用该方法。GaussDB200PL/Java基于开源GreenplumPL/Java1.4.0开发,PL/Java所使用的J
用户自定义函数-C语言函数
用户定义的函数可以使用C编写。这类函数被编译成动态库并且由服务器在需要的时候载入。在一个会话第一次调用一个特定的用户定义函数时,数据库进程会把动态库文件载入到内存中以便该函数被调用。用户在定义C函数的时候必须为该函数指定两块信息:动态库文件的名称,以及要在该动态库中调用的特定的C名称。支持的数据类型
附录-扩展语法
GaussDB200提供了一些扩展语法,目前处于Beta阶段,仅供内部使用,外部不可用。下表列举了GaussDB200中支持的扩展语法,不作为商用特性-交付,仅供参考。表1扩展SQL语法类别语法关键字描述创建表(CREATETABLE)[WITH({storage_parameter=value}[
附录-扩展函数
GaussDB200针对扩展数据类型,提供了一些对应的操作函数。这些操作函数依赖于扩展数据类型,目前处于Beta阶段,可能在功能上存在不稳定性,或者在后续版本发生变更。请在商用业务场景下谨慎使用,以免对正式业务系统的升级、扩容等方面产生不利影响。该部分内容由GUC参数support_extended
GIN索引-GIN提示与技巧
创建vs插入由于可能要为每个项目插入很多键,所以GIN索引的插入可能比较慢。对于向表中大量插入的操作,我们建议先删除GIN索引,在完成插入之后再重建索引。与GIN索引创建、查询性能相关的GUC参数如下:maintenance_work_memGIN索引的构建时间对maintenance_work_m
GIN索引-实现
在内部,GIN索引包含一个在键上构造的B-tree索引,每个键是一个或多个被索引项的一个元素(比如,一个数组的一个成员)。并且叶页上每个元组包含了堆指针的B-tree的一个指针(一个postingtree),当列表小到足以和键值一起存储到一个索引元组中时,则是堆指针的一个简单列表(一个posting
GIN索引-扩展性
GIN索引的接口实现了一个高层次的抽象,要求访问用户仅需要实现被访问数据类型的语义。GIN层自身可以处理并发操作、记录日志、搜索树结构的任务。定义GIN索引的访问方式所要做的事情就是实现多个用户定义的方法,这些方法定义了键在树中的行为、键与键之间的关系、需要索引的item、能够使用索引的查询。简而言