首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

--PostgreSQL 的存储过程怎么写 与 质疑

PostgreSQL 的存储过程在POSTGRESQL 11 有了改变,从统一的 create function 到 create procedure 到底能从中获得什么 1 支持了commit 和...rollback 2 帮助怎么从oracle 迁移到 postgresql 的便利性 3 符合更多传统数据库的用户(ORACLE SQL SERVER MYSQL) 最近一段反思了一下为什么...可以避免命令的多轮解析在目前的PG11 中如果你要返回一个表的查询内容,从现在11到PG12,目前存储过程 是无法满足这个需求的。目前如果要通过函数来完成在一段PLPGSQL中输出某个表的集合。...通过查阅资料,目前postgresql 的存储过程和函数之间的区别可以总结成1 存储过程中可以包含commit rollback2 函数可以有return 返回值输出3 存储过程支持 savepoint...2 在有事务断点,或者需要设置回滚或者保存点的大型的SQL 程序集的情况下,建议使用 PROCEDURE 当然也有部分人对POSTGRESQL 的存储过程提出了异议,说他根本没有像其他的数据库有事务性

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

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

    工作中可能会存在业务比较复杂,重复性工作比较多,需要批量处理数据的情况,此时使用存储过程会方便很多,存储过程的执行效率也会快很多,能帮助我们节省很多代码和时间。...并且,将需要的sql写成存储过程并设置成定时任务,那样在任意时刻,需要执行任意次数都可以根据你的设定执行,哪怕你不在工位上,减少你的工作量,能让你更愉快的摸鱼(不是)。...PostgreSQL 概述 在 PostgreSQL 中,除了标准 SQL 语句之外,通过创建复杂的过程和函数来满足程序需要,我们称为存储过程和自定义函数(User-Defined Function)。...PL/pgSQL 存储过程,它和 Oracle PL/SQL 非常类似,是 PostgreSQL默认支持的存储过程,下面针对优缺点给大家做了简要分析。 优点 减少应用和数据库之间的网络传输。...当存储过程编译出来后,我们该如何执行或者调用存储过程呢?

    4.1K21

    POSTGRESQL 存储过程--如何写出新版本PG的存储过程的小案例

    最近在开始研究POSTGRESQL 的存储过程,主要的原因有以下几个 1 因为要开发适合目前公司中的基于POSTGRESQL 的运行维护产品,同时基于POSTGRESQL 的数据库有云数据库,基于程序的安全性和部署的便利性...2 基于POSTGRESQL 大部分的存储过程的教学内容还是在create function部分 ,在POSTGRESQL 11 后的版本的数据库的存储过程已经不再使用create function...,而采用 create procedure 的方式撰写,功能和扩展性提高了 所以需要针对POSTGRESQL 的存储过程进行一个详细的研究,看看怎么更好的为以后的工作服务。...这是官方的procedure 的固定语法这里需要注意第一个地方 1 POSTGRESQL 的存储过程和函数可以是一个名字,只要后面的给定的参数不一致即可,也就是有一部分可能性存储过程和函数的名字是一样的...3 argname argtype 这是存储过程中的参数名和参数的类型设置的 4 SECURITY INVOKER 为设置执行存储过程的用户的权限来调用存储过程 案例 1 create

    1.7K40

    调用PostgreSQL存储过程,找不到函数名的问题

    PostgreSQL的表,函数名称都是严格区分大小写的,所以在使用的时候没有注意大小写问题容易导致找不到函数名的错误,但最近两天我们发现,如果函数参数使用了自定义的数据类型,也会发生这个问题。...问题描述: 下面的示例测试代码: PWMIS.DataProvider.Data.AdoHelper db = MyDB.GetDBHelperByConnectionName("PostgreSQL"...System.Data.CommandType.StoredProcedure,                 new System.Data.IDataParameter[] { para }); 运行该存储过程...;  还是 para.DbType = DbType.String  ;  调用函数updatefundattention2 均能通过,故此得到结论: 目前自定义的 citext 类型.NET程序无法设置正确的...问题影响: 在WFT中,所有使用.NET程序调用PostgreSQL存储过程的代码,如果存储过程的参数使用了自定义的类型(例如citex),均会受影响。

    2K50

    Mysql存储过程从0开始(上)

    //方法体: select concat(@a,' world'); concat是链接字符串,set @a="Hello"; (2)调用是call hanshuming(); 4、简单的入门的存储过程小例子...mysql > DELIMITER // //首先你要转义,防止mysql把你的语句当成sql语句执行 mysql > CREATE PROCEDURE proc1 --proc1存储过程名....存储过程名\G; ?...(3)删除存储过程 drop procedure sp_name --存储过程的名称 DROP PROCEDURE --删除所有,别轻易用 6、定义的变量只是作用在存储过程里面,超出就没了,下图为例,也就是在...当你调用这个存储过程的时候,你不能直接将数据放在方法里面,你要设置这个变量的值,然后把这个变量放进去 如果直接放会报错 ? 应该是这样调用 ?

    1.2K60

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

    所以到此为止,上面的一段解释了为什么要学习PL/PGSQL 以及部分继续使用存储过程人的一些观点....因为只要是MYSQL一定是和高并发,小事务有关的, 存储过程在MYSQL的应用场景是无法存活的....下面就从POSTGRESQL 的函数开始, 四个部分 建立一个PG函数, 传递参数, 如何在内部控制函数, 从函数内部返回一个结果....这里多说一句POSTGRESQL 的函数和存储过程,是可以通过其他语言来进行撰写, C ,PYTHON 等都是可以....当然有些程序中无度不区分应用场景使用存储过程和函数,造成性能问题,的另说, 但不能将其归罪与存储过程和函数本身,终究是使用的那些人的水平才应该是被.......

    1.1K71

    MySQL从删库到跑路_高级(九)——存储过程

    3、游标的优点 游标是针对行操作的,对从数据库中SELECT查询得到的结果集的每一行可以进行分开的独立的相同或不同的操作,是一种分离的思想。游标是面向集合与面向行的设计思想之间的一种桥梁。...5、游标的适用场景 MySQL数据库中,可以在存储过程、函数、触发器、事件中使用游标。...into cursor_table values(3, '沙悟净', 100);insert into cursor_table values(4, '唐僧', 20); 使用三种方式使用游标创建一个存储过程...where age>30; #指定游标循环结束时的返回值 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true; #设置初始值...#结束游标循环 END LOOP; #关闭游标 CLOSE cur; #输出结果 SELECT total; END #调用存储过程

    76230

    MySQL从删库到跑路_高级(四)——存储过程

    2、存储过程的优点 A、存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 B、存储过程允许标准组件式编程。...存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 C、存储过程能实现较快的执行速度。...drop procedure sp_name; 不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程。...创建存储过程,根据输入的学号从指定的表还原学记录,存储过程先删除指定的学号的TStudent表中学生记录,再从指定的表中插入该学生到Tstudent表。...CT2 from @sql2;EXECUTE CT2;END; 修改某个学生的记录 update TStudent set sname='孙悟空' where studentID='00997'; 从指定表中恢复数据

    73740

    数据库PostrageSQL-服务器配置设置参数

    有些参数只能在服务器启动时设置,在配置文件中对这些条目的修改将被忽略, 直到下次服务器重启。配置文件中的非法参数设置也会在SIGHUP处理过程中被 忽略(但是会记录日志)。...已经提到过的ALTER SYSTEM命令提供了一种改变全局默认值的从SQL可 访问的方法;它在功效上等效于编辑postgresql.conf。...它们会覆盖从配置文件或服务器命令行 获得的值,并且作为该会话后续的默认值。注意某些设置在服务器启动后不能被更改,并且因此 不能被这些命令(或者下文列举的命令)设置。...SYSTEM提供的设置,因此除了重启服务器之外无法从全局上改变它们。...当多个服务器把它们的配置全部存储在一个位置(例如在一个版本控制仓库中)时,这可以帮助消除歧义(在版本控制下存储数据库配置文件是另一个值得考虑的好方法)。

    2.2K20

    MySQL 简单查询语句执行过程分析(三)从存储引擎读数据

    本文是 MySQL 简单查询语句执行过程分析 6 篇中的第 3 篇,第 1 ~ 2 篇请看这里: MySQL 简单查询语句执行过程分析(一)词法分析 & 语法分析 MySQL 简单查询语句执行过程分析(...InnoDB 存储引擎中读取数据,所以文中涉及到存储引擎的地方,都直接使用 InnoDB 代替了。...创建 InnoDB 实例过程中,只是创建了查询模板实例并给其中的属性设置了初始值。在填充查询模板阶段会为这些属性设置实际的值。 2....接下来就要开始从 InnoDB 读取记录了,由于 InnoDB 记录存储本身也是个很大的话题,要说清楚怎么定位到要查找的记录,怎么读取下一条记录这些细节,需要很多关于 InnoDB 的文件存储以及 Buffer...InnoDB 的增、删、改、查语句,都必须在事务中执行,本文示例 SQL 执行时,设置的事务隔离级别为 REPEATABLE-READ,可以通过 show variables like 'transaction_isolation

    1.2K20

    腾讯云免费50GB对象存储COS领取及绑定域名设置过程

    如果我们有接触到七牛云存储、又拍云、阿里云OSS云存储,肯定比较理解其产品的特点,一般我们可以用于文件的私有存储,以及网站静态文件分离备份和加速。...以及我们还可以用于数据的第三方备份存储,总之用途还是比较多的。腾讯云也有提供对象存储COS,且免费可以提供50GB存储容量,免费有10GB流量每月,超过是需要付费的。...如果我们用于一般的私有存储文件或者是网站备份,或者是网站静态文件的使用,对于小型个人网站还是足够用的。在这篇文章中,老蒋整理腾讯云免费50GB对象存储COS领取和设置过程,当然是支持绑定域名的。...第二、腾讯云对象存储设置 这里我们创建存储。 设置名称、选择存储盘地址和访问权限。设置完毕之后就可以使用 第三、使用和设置 这里我们可以直接手动上传存储的文件。...本文出处:老蒋部落 » 腾讯云免费50GB对象存储COS领取及绑定域名设置过程 | 欢迎分享

    5.1K40

    使用PostgreSQL中的DO块或存储过程实现数据库初始化脚本的幂等性

    今天,我们就以PostgreSQL数据库为例,介绍如何使用DO块或存储过程来实现脚本的幂等性。 什么是幂等性? 在计算机科学中,幂等性是一个重要的概念。...在PostgreSQL中,由于CREATE DATABASE和CREATE USER语句不支持"IF NOT EXISTS"语法,所以我们需要使用一种特殊的存储过程,叫做匿名代码块(也被称为"DO"块)...然而,存储过程和DO块也有一些重要的区别: 存储过程是有名称的,并且可以接受参数。这意味着你可以多次调用同一个存储过程,而且每次调用时,可以使用不同的参数。 存储过程在定义之后,会被保存在数据库中。...这意味着你可以在多个查询或者会话中调用同一个存储过程。而DO块中的代码在执行之后,就会被丢弃,不会被保存在数据库中。 存储过程可以返回结果,这意味着你可以使用存储过程来查询数据,或者计算一些值。...结论 在编写数据库初始化脚本时,通过合理使用PostgreSQL中的DO块或存储过程,我们可以有效地实现脚本的幂等性,这对于系统升级和数据库的维护来说,是非常重要和有用的。

    84710

    MySQL数据库,从入门到精通:第十五篇——MySQL存储过程和函数详解

    第 15 章_存储过程与函数 MySQL从 5. 0 版本开始支持存储过程和函数。...如果没有设置相关的值,则MySQL默认指定值为DEFINER。 COMMENT 'string':注释信息,可以用来描述存储过程。...SELECT… INTO:把从数据表中查询的结果存放到变量中,也就是为变量赋值。 5 、需要设置新的结束标记 DELIMITER 新的结束标记 因为MySQL默认的语句结束符号为分号‘;’。...比如:“DELIMITER //”语句的作用是将MySQL的结束符设置为//,并以“END //”结束存储过程。存储过程定义完毕之后再使用“DELIMITER ;”恢复默认结束符。...3 、存储过程的安全性强。 我们在设定存储过程的时候可以设置对用户的使用权限,这样就和视图一样具有较强的安全性。 4 、可以减少网络传输量。

    35310

    MySQL---数据库从入门走向大神系列(八)-在java中执行MySQL的存储过程

    http://blog.csdn.net/qq_26525215/article/details/52143733 在上面链接的博客中,写了如何用MySQL语句定义和执行存储过程 Java执行存储过程:...Java演示执行带输入参数的存储过程: 构造 call 转义序列时,请使用 ?(问号)字符来指定 IN 参数。此字符充当要传递给该存储过程的参数值的占位符。...向 setter 方法传递值时,不仅需要指定要在参数中使用的实际值,还必须指定参数在存储过程中的序数位置。例如,如果存储过程包含单个 IN 参数,则其序数值为 1。...Java演示执行带输入输出参数的存储过程: 构造 call 转义序列时,请使用 ?(问号)字符来指定 OUT 参数。 此字符充当要从该存储过程返回的参数值的占位符。...例如,如果存储过程包含单个 OUT 参数,则其序数值为 1;如果存储过程包含两个参数,则第一个序数值为 1,第二个序数值为 2。

    1.1K20

    进阶数据库系列(二十三):PostgreSQL 性能优化

    执行子查询时,PostgreSQL需要为内层查询语句的查询结果建立一个临时表。然后外层查询语句从临时表中查询记 录。查询完毕后,再撤销这些临时表。因此,子查询的速度会受到一定的影响。...这意味着数据会在内存中存储两次,首先是存入PostgreSQL缓冲区,然后是内核缓冲区。这被称为双重缓冲区处理。对大多数操作系统来说,这个参数是最有效的用于调优的参数。...此参数的作用是设置PostgreSQL中用于缓存的专用内存量。 shared_buffers的默认值设置得非常低,因为某些机器和操作系统不支持使用更高的值。...在设置这个参数时,还应该考虑PostgreSQL的共享缓冲区以及将被用于PostgreSQL数据文件的内核磁盘缓冲区。默认值是4GB。...这是一项开销很大的操作,整个过程涉及大量的磁盘读/写操作。

    3.7K10
    领券