首页
学习
活动
专区
圈层
工具
发布

OushuDB-PL 过程语言-声明

SQL中的数据类型均可作为PL/pgSQL变量的数据类型,如integer、varchar和char等。2)....CONSTANT选项是为了避免该变量在进入BEGIN块后被重新赋值,以保证该变量为常量。4). 如果声明了NOT NULL,那么赋予NULL数值给该变量将导致一个运行时错误。...之 后别名和数字标识符均可指向该参数值,见如下示例:1). 在函数声明的同时给出参数变量名。...如果PL/pgSQL函数的返回类型为多态类型(anyelement或anyarray),那么函数就会创建一个特殊的 参数:$0。我们仍然可以为该变量设置别名。...拷贝类型: 见如下形式的变量声明: %TYPE表示一个变量或表字段的数据类型,PL/pgSQL允许通过该方式声明一个变量,其类型等同于 variable或表字段的数据类型,见如下示例: 在上面的例子中,

1.5K20

OushuDB-PL 过程语言-基本语句

赋值: PL/pgSQL中赋值语句的形式为:identIFier := expression,等号两端的变量和表达式的类型或者一致, 或者可以通过PostgreSQL的转换规则进行转换,否则将会导致运行时错误...如果命令返回零 行,目标被赋予空值。如果命令返回多行,那么将只有第一行被赋予目标,其它行将被忽略。...执行动态命令: 如果在PL/pgSQL函数中操作的表或数据类型在每次调用该函数时都可能会发生变化,在这样的情况下, 可以考虑使用PL/pgSQL提供的EXECUTE语句:EXECUTE command-string...这里需要特别注意的是,该命令字符串将不会发生 任何PL/pgSQL变量代换,变量的数值必需在构造命令字符串时插入到该字符串中。...和所有其它PL/pgSQL命令不同的是,一个由EXECUTE语句运行的命令在服务器内并不会只prepare和保 存一次。相反,该语句在每次运行的时候,命令都会prepare一次。

92120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    HAWQ技术解析(十) —— 过程语言

    PL/pgSQL自动在所有HAWQ数据库中安装。         PL/pgSQL函数参数接收任何HAWQ服务器所支持的标量数据类型或数组类型,也可以返回这些数据类型。...除此之外,PL/pgSQL还可以接收或返回任何自定义的复合数据类型,也支持返回单行记录(record类型)或多行结果集(setof record或table类型)。...PL/pgSQL可以声明输出参数,这种方式可代替用returns语句显式指定返回数据类型的写法。当返回值是单行多列时,用输出参数的方式更方便。...为了支持这种情况,表函数可以被声明为返回伪类型(pseudotype)的记录。当这种函数用于查询中时,必须由查询本身指定返回的行结构。下面的例子使用动态SQL,返回结果集依赖于作为入参的查询语句。...如果一个函数的返回值被声明为多态类型,那么它的参数中至少应该有一个是多态的,并且参数与返回结果的实际数据类型必须匹配。

    5K50

    Postgresql PLPGSQL 程序语言系列 1 (存储过程过时了吗,与函数)

    POSTGRESQL 本身也是有强大PL/PGSQL的, 有些环节和场景, 写好PL/PGSQL也是一种能力....这样的观点就类似你有一台奔驰AMG45 ,但你却那他当一辆奔驰C200开.数据库被大材小用了....所以到此为止,上面的一段解释了为什么要学习PL/PGSQL 以及部分继续使用存储过程人的一些观点....Roybal',9,1); 上面的函数定义了, 传入的参数的数据类型,以及返回数据的类型,通过$$来界定存储过程$$ 并且在最下面标注上的函数的语言是plpgsql....下面以一个简单的例子来结束今天的文字 下面需要一个函数,在程序中调用,输入一个值,对输入的值的原值,原值基础上增加100, 原值与随机值的乘积,以及取输入值中最大的整数值,四舍五入进行插入.如果这个使用程序编写和调用函数比较

    1.4K71

    进阶数据库系列(十一):PostgreSQL 存储过程

    PL/pgSQL 简单易学,无论是否具有编程基础都能够很快学会。...PL/pgSQL 存储过程,它和 Oracle PL/SQL 非常类似,是 PostgreSQL默认支持的存储过程,下面针对优缺点给大家做了简要分析。 优点 减少应用和数据库之间的网络传输。...argname:一个参数的名称 argtype:该函数参数的数据类型 default_expr:如果参数没有被指定值时要用作默认值的表达式 rettype:返回的数据类型,如果该函数不会返回一个值,可以指定返回类型为...(后面详细讲) column_name:RETURNS TABLE语法中一个输出列的名称 culumn_type:RETURNS TABLE语法中的输出列的数据类型 PL/pgSQL 的结构 [ 被双引号引用,标识符会被隐式地转换为小写形式,就像它们在普通 SQL 命令中。 PL/pgSQL代码中的注释和普通 SQL 中的一样。一个双连字符(–)开始一段注释,它延伸到该行的末尾。

    8.4K21

    OushuDB-PL 过程语言-PLpgSQL - SQL过程语言

    在OushuDB的标准发布中当前有四种过程语言可用: PL/pgSQL、 PL/Perl、 PL/Python以及 PL/Java, 其中PL/pgSQL是默认安装可用的。...另外还有其他过程语言可用,但是它们没有被包括在核心发布中, 如PL/R等,我们可以在第三方开源网站来获取它们的源码。 接下来我们主要看一下 PL/pgSQL - SQL过程语言。...PL/pgSQL - SQL过程语言 PL/pgSQL 是 PostgreSQL 数据库系统的一个可加载的过程语言,它的设计目标是创建一种可加载的过 程语言,可以: 用于创建函数和触发器过程 为 SQL...一、概述: PL/pgSQL函数在第一次被调用时,其函数内的源代码(文本)将被解析为二进制指令树,但是函数内的表 达式和SQL命令只有在首次用到它们的时候,PL/pgSQL解释器才会为其创建一个准备好的执行规划...如果在一个条件语句中,有部分SQL命令或表达式没 有被用到,那么PL/pgSQL解释器在本次调用中将不会为其准备执行规划,这样的好处是可以有效地减少 为PL/pgSQL函数里的语句生成分析和执行规划的总时间

    1.3K10

    OushuDB-PL 过程语言-控制结构

    如果要返回一个复合类型的数值,则必须让表达式返回记录或者匹配的行变量。 2)....RETURN NEXT expression 如果PL/pgSQL函数声明为返回SETOF sometype,其行记录是通过RETURN NEXT命令进行填充的,直 到执行到不带参数的RETURN时才表示该函数结束...因此对于RETURN NEXT而言,它实际上并不从函数 中返回,只是简单地把表达式的值保存起来,然后继续执行PL/pgSQL函数里的下一条语句。...条件: 在PL/pgSQL中有以下三种形式的条件语句。 1). IF-THEN 2)....异常捕获: 在PL/pgSQL函数中,如果没有异常捕获,函数会在发生错误时直接退出,与其相关的事物也会随之回 滚。我们可以通过使用带有EXCEPTION子句的BEGIN块来捕获异常并使其从中恢复。

    4.5K20

    CMU 15-445 -- Embedded Database Logic - 12

    ---- User-Defined Functions (UDF) UDF 允许应用开发者在 DB 自定义函数,根据返回值类型可以分为: Scalar Functions:返回单个数值 Table Functions.../SQL Postgres:PL/pgSQL MySQL/Sybase:Transact-SQL 以下是 PL/pgSQL 的例子: CREATE OR REPLACE FUNCTION sum_foo...---- User-Defined Types (UDT) 尽管 DBMSs 支持所有基本的原始数据类型,但如果我们想存储组合数据类型,如 struct,该如何做?...就已有的知识,我们能想到两种方法: Attribute Splitting:即将组合数据类型单独作为一张表 (pros&cons) Application Serialization:即将组合数据序列化...---- Materialized Views View 对应的查询在 View 每次被使用时都会被执行一次,如果我们希望 View 实体化,提高查询效率,可以使用 Materialized Views

    1.6K40

    PLSQL --> 存储过程

    是一个有名字的PL/SQL代码块,支持接收或不接受参数 ,同时也支持参数输出。一个存储过程通常包含定于部分,执行部分,Exception部分,可以被其他子程序调用,也可以被重用。...CREATE OR REPLACE PROCEDURE display_sal(v_job emp.job%TYPE) --该形参缺省为in类型,数据类型为emp.job%TYPE AS v_avg_sal...如果指定参数选项,则过程为有参过程(定义时需要指定参数名字、模式、数据类型,调时时需要给出对应的参数值),定义时的参数, 称为形参,调用时的参数称为实参。...'||sysdate); END display_systime; / execute display_systime; --调用 2.有参过程 定义时需要指定参数的名字、模式、数据类型...CONNECT BY PRIOR) 有关PL/SQL请参考 PL/SQL --> 语言基础 PL/SQL --> 流程控制 PL/SQL --> 存储过程 PL/SQL --> 函数 PL/SQL

    2.2K30

    存储过程和函数

    但是到目前为止,所创建的PL/SQL块都是匿名的,每次执行时都需要被重新编译且没有被存储在数据库中,不能被其他的PL/SQL块使用。...过程与函数是命名的PL/SQL块,可以被编译后存储在数据库中,以备执行,其他PL/SQL块可以按名称来调用。实际应用中,可以将商业逻辑、企业规则写成过程或函数保存到数据库中,以便共享。...核心技能部分​ 5.1 子程序简介 子程序是指被命名的PL/SQL块,这种块可以带有参数,可以在不同应用中多次调用。PL/SQL有两种类型的子程序:过程和函数。...为形参传递变量和数据可以采用位置传递、名称传递和组合传递3种方法。如果在定义参数时带有默认值,则在调用子程序时可以不为该形参提供数值。为说明多个参数传递的问题,我们编写一个计算3个整数和的过程。...当指定参数数据类型时,不能指定其长度。RETURN子句用于指定函数返回值的数据类型,is或as用于开始一个PL/SQL块。

    87310

    PostgreSQL基础(七):表的基本操作(一)

    english_score,chinese_score) values(2,2,55,55,55);select * from student;select * from score;为了完成级联删除的操作,需要编写pl...触发器函数允许使用一些特殊变量NEW 数据类型是RECORD;该变量为行级触发器中的INSERT/UPDATE操作保持新数据行。在语句级别的触发器以及DELETE操作,这个变量是null。...OLD 数据类型是RECORD;该变量为行级触发器中的UPDATE/DELETE操作保持新数据行。在语句级别的触发器以及INSERT操作,这个变量是null。构建一个删除学生分数的触发器函数。...它们可以在导致触发器事件的语句末尾被引发或者在包含该语句的事务末尾被引发。在后一种情况中,它们被称作是被 延迟 。一个待处理的延迟触发器的引发也可以使用 SET CONSTRAINTS立即强制发生。...当约束触发器实现的约束被违背时,约束触发器应该抛出一个异常。

    71410

    比较PostgreSQL与MySQL两大开源关系数据库管理系统

    PostgreSQL是一个企业级的关系数据库,允许关系和非关系查询,它支持过程语言,例如: PL/pgSQL PL/Python PL/Tcl PL/Perl 它还支持非标准过程语言,例如 Java、....3、MySQL 性能 MySQL 很常见并被广泛选择作为基于 Web 的数据库,用于简单的数据事务,整体性能不错,但 MySQL 在处理重负载或复杂查询时表现不佳。...4、数据类型 MySQL 和 PostgreSQL 在它们支持的数据类型上有很大的不同,而 PostgreSQL 在这方面往往具有优势。...5、PostgreSQL 数据类型 PostgreSQL 可以在单个产品中存储结构化和非结构化数据类型,它支持大多数数据类型,例如数字、货币、字符、二进制、日期/时间、布尔值、枚举、几何、网络地址、BitString...PostgreSQL 标榜自己是“世界上最先进的开源关系型数据库”,PostgreSQL 被构建为符合标准、功能丰富且可扩展,并且非常适合并发写入操作。

    2.5K00

    CentOS(linux)安装PostgreSQL

    它支持了大多数的SQL:2008标准的数据类型,包括整型、数值值、布尔型、字节型、字符型、日期型、时间间隔型和时间型,它也支持存储二进制的大对像,包括图片、声音和视频。...高度可定制性 PostgreSQL的存储过程开发可以使用众多的程序语言,包括Java、Perl、Python、Ruby、Tcl、C/C++和自带的PL/pgSQL,其中的PL/pgSQL与Oracle的...PL/SQL很相似,内置了数百个函数,功能从基本的算术计算和字符串处理到加密逻辑计算并与Oracle有高度兼容性。...相应地,PostgreSQL也包括一套框架允许开发人员定义和创建他们自己的可在函数中使用数据类型,也可以定义操作符新的处理方式,具有了这样的能力后,PostgreSQL现已具有了各种高级数据类型,包括几何图形...192.168.2.125 -p 5432 (9)修改密码 psql登陆 然后, \password postgres 安装后的配置 数据库默认安装为:/var/lib/pgsql

    3.9K20

    PostgreSQL基础(五):PostgreSQL基本操作和数据类型介绍

    ​PostgreSQL基本操作和数据类型介绍一、单引号和双引号在PGSQL中,写SQL语句时,单引号用来标识实际的值。双引号用来标识一个关键字,比如表名,字段名。...,添加上具体的数据类型即可-- 将字符串转成位图类型select bit '010101010101001';第二种方式:也可以在具体值的后面,添加上 ::类型 ,来指定-- 数据类型select '2011...PGSQL和Oracle十分相似,支持序列:sequence。PGSQL可没有auto_increment。...PGSQL提供了序列的数据类型,可以在声明表结构时,直接指定序列的类型即可。bigserial相当于给bigint类型设置了序列实现自增。...>右移16>>18数值操作也提供了一些函数,比如pi(),round(数值,位数),floor(),ceil()​

    1.7K10

    【基础概念】YashanDB PL语言

    PL语言是一种高度可编程的语言,提供了多种数据类型(SQL能力范畴内各种标准的数据类型、用户可自定义数据类型)、变量声明、变量赋值、多种类型表达式、控制语句、循环语句、跳转语句、静态SQL、动态SQL、...PL运行机制在常见的程序语言中,每一次函数调用都会在调用栈上维护一个独立的栈帧,用于记录调用上下文、形参和局部变量。...PL的执行原理正是如此,每进行一次调用(例如函数、控制语句、动态SQL等调用),PL的数据区会形成压栈操作,入栈的是PL数据区的形参和局部变量。在调用结束后,形成出栈操作,同时完成形参到实参的赋值。...PL的语句块在编译阶段已经编译好具体行号,在执行阶段会根据计算结果选择行号递增或发生行号跳转,在产生调用时,会进行上下文压栈处理,展开并执行被调用语句块。...在PL中主要通过%TYPE继承变量的数据类型,通过%ROWTYPE继承记录的数据类型。# 定时任务定时任务(JOB)是一个根据时间定时触发执行的后台任务。

    1.8K10

    PostgreSQL安装和使用教程

    支持复杂数据类型:PostgreSQL支持各种复杂数据类型,如数组、JSON、XML等,可以满足各种应用的需求。 大数据处理能力:PostgreSQL支持大数据处理,可以处理数百万甚至数十亿条数据。...可编程性:PostgreSQL支持多种编程语言,如SQL、PL/pgSQL、PL/Python、PL/Perl等,可以方便地进行开发和扩展。 安装 postgreSQL的下载地址在这里。...pgSQL默认会创建: 数据库:PostgreSQL会默认创建一个名为“postgres”的数据库,作为系统默认的数据库。...因此,pgsql中的角色和用户没有明显的区别。一个小区别是CREATE USER is now an alias for CREATE ROLE....我们可以使用pgsql来创建这个表格,并插入一些样本数据。

    4K10

    数据库PostrageSQL-从源代码安装

    /pgsql/data su - postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/postgres...--with-perl 制作PL/Perl服务器端编程语言。 --with-python 制作PL/Python服务器端编程语言。 --with-tcl 制作PL/Tcl服务器编程语言。...这将被用来决定编译 PL/Perl 时的依赖性。 PYTHON Python 解释器程序。这将被用来决定编译 PL/Python 时的依赖性。...标准的安装只提供客户端应用开发和服务器端程序开发所需的所有头文件,例如用 C 写的定制函数或者数据类型(在PostgreSQL 8.0 之前,后者需要独立地执行一次make in￾stall-all-headers...如果你在一个平台上有安装问题,并且该平台根据最近的编译农场结果已经可以被支持,请将问题报告给pgsql-bugs@lists.postgresql.org。

    5.1K40
    领券