zoukankan      html  css  js  c++  java
  • PL/pgSQL之入门

    PL/pgSQL介绍

    plpgsql入门,介绍使用它有哪些优点以及一个HelloWorld。

    PL/pgSQL是一种用于PostgreSQL数据库系统的可载入的过程语言。

    • 可以被用来创建函数和触发器过程
    • 对SQL语言增加控制结构
    • 可以执行复杂计算
    • 继承所有用户定义类型、函数和操作符
    • 可以被定义为受服务器信任
    • 便于使用

    优点

    • 客户端和服务器之间的额外往返通信被消除
    • 客户端不需要的中间结果不必被整理或者在服务器和客户端之间传送
    • 多轮的查询解析可以被避
    • 与不使用存储函数的应用相比,这能够导致可观的性能提升。

    PL/pgSQL 的 HelloWorld

    函数的结构:

    CREATE FUNCTION somefunc(integer, text) RETURNS integer
    AS 'function body text'
    LANGUAGE plpgsql;
    

      

    在开发过程中不关心函数是否存在,可以使用 CREATE OR REPLACE Function来创建函数。

    PL/pgSQL是一种块结构的语言。一个块被定义为:

    [ <<label>> ]
    [ DECLARE
        declarations 
    BEGIN
        statements
    END [ label ];
    

    真正的HelloWorld

    CREATE FUNCTION helloworld() RETURNS varchar AS $$
    << outerblock >>
    DECLARE
        name varchar := 'unknown';
    BEGIN
        RAISE NOTICE 'My Name is %', name ;  -- Prints (My Name is unknown)
        name := 'plpgsql';
        --
        -- 创建一个子块
        --
        DECLARE
            name varchar := 'interblock';
        BEGIN
            RAISE NOTICE 'My Name is %', name;  -- Prints (My Name is interblock)
            RAISE NOTICE 'My Name is %', outerblock.name;  -- Prints (My Name is unknown)
        END;
        RAISE NOTICE 'My Name is %', name;  -- Prints (My Name is plpgsql)
        RETURN name;
    END;
    $$ LANGUAGE plpgsql;
    

      

    执行

    将以上语句复制在Navicat或者PgAdmin等数据库客户端执行,即可创建helloworld函数。

    以上看到执行helloworld函数后输出信息以及结果,结果为plpgsql。

    以上为本篇的入门介绍,欢迎各位批评指正。

    关于作者

    大家有需要介绍哪些部分,或者一些想法欢迎联系我。

    GISer
    QQ: 1016817543
    邮箱:1016817543@qq.com
    github:https://github.com/MrSmallLiu (欢迎star)

    刘航,国信司南(北京)地理信息技术有限公司,技术经理。负责过多个基于 PostgreSQL 数据库以及 PostGIS 的大中型项目。公司矢量切片产品(基于 PostgreSQL 数据库)研发核心人员。

  • 相关阅读:
    linux中断申请之request_threaded_irq
    中断处理
    barrier()函数
    Intellij-设置生成serialVersionUID的方法
    mybatis一级缓存二级缓存
    mysql-EXPLAIN
    mybatis配置多个数据源事务(Transaction)处理
    mybatis实战教程三:mybatis和springmvc整合
    责任链模式
    MySQL-InnoDB-锁
  • 原文地址:https://www.cnblogs.com/sandata/p/12720998.html
Copyright © 2011-2022 走看看