pgsql函数定时更新表_Postgresql PL/PGSQL 程序语言系列 1 (存储过程过时了吗,与函数)...
年龄到底是不是一个问题,35岁是一个坎, 招聘中有一些门槛这不奇怪,奇怪的是那这些信息去贩卖的人, 让整体的中国中年人活在焦虑和不安中,这绝对不是一个好人应该做的事情, 小范围的事实是可以控制的, 而肆无忌惮的"大喇叭"
,甚至歪曲部分内容,到底要利用这些信息吸引流量,造成全社会的恐惧, 你心安吗?
年龄到底是不是一个问题,其实看个体,个人秉着不学点什么就难受的精神并未受到那些歪曲事实的信息的影响, 有开始了新的一个星期的文字.
DB层关于语言的能力其实是在下降的,尤其在使用了NOSQL, 以及MYSQL 后,数据库本身的语言SQL 的能力变得不再重要,或不再需要,这也就导致,ORALCE SQL SERVER 的先辈们的那些过程语言被抛弃. POSTGRESQL 本身也是有强大PL/PGSQL的, 有些环节和场景, 写好PL/PGSQL也是一种能力.
正文 本系列也是根据一本POSTGRESQL SERVER Programming的书而来的,其中可能有一些个人的扩展,和例子.
___________________________________________________________________________
The simplest and least powerful way of looking at server programming is to view the database as a data bucket.
这段的第一句,在服务器程序领域将数据库看成一个数据容器是最简单和无技术含量的.
上面这段就不在解释了,有点含沙射影某数据库,从某种角度来看他说的不无道理,如果一次能批处理数据,但还要一行行的通过主键来处理,的确是drawbacks.
此书的作者是一个有着27年工作经验的人士,上这段话可以看出作者还是有两把刷子的. 其中提到, 以客户为中心的程序开发理论中总是将数据库与存储过程进行隔离, 其设计的目标通常是源于让应用程序来控制整个业务的逻辑,应用开发非常重要,而数据库则就是一个必须存在的"非必须".
这样的观点就类似你有一台奔驰AMG45 ,但你却那他当一辆奔驰C200开.数据库被大材小用了.
所以到此为止,上面的一段解释了为什么要学习PL/PGSQL 以及部分继续使用存储过程人的一些观点.
画了一张图,来表达作者想要莫奥数的两种应用程序架构不同的设计思路和想法
角度1 我们可以理解为, NOSQL, MYSQL ,
角度2 我们可以理解为 ORACLE SQL SERVER POSTGERSQL
等
个人认为传统数据库和NOSQL NEWSQL 在应用程序的角度的不同点,这里是算是一个重点. 所以你没有听过 MYSQL SQL. 因为只要是MYSQL一定是和高并发,小事务有关的, 存储过程在MYSQL的应用场景是无法存活的.
下面就从POSTGRESQL 的函数开始, 四个部分 建立一个PG函数, 传递参数, 如何在内部控制函数, 从函数内部返回一个结果.
CREATE FUNCTION mid(varchar, integer, integer) RETURNS varchar
AS $$
BEGIN
RETURN substring($1,$2,$3);
END;
$$
LANGUAGE plpgsql;
SELECT public.mid('Kirk L. Roybal',9,1);
上面的函数定义了, 传入的参数的数据类型,以及返回数据的类型,通过$$来界定存储过程$$ 并且在最下面标注上的函数的语言是plpgsql. 通过return 来讲结果返回.
这里多说一句POSTGRESQL 的函数和存储过程,是可以通过其他语言来进行撰写, C ,PYTHON 等都是可以.
下面以一个简单的例子来结束今天的文字
下面需要一个函数,在程序中调用,输入一个值,对输入的值的原值,原值基础上增加100, 原值与随机值的乘积,以及取输入值中最大的整数值,四舍五入进行插入.如果这个使用程序编写和调用函数比较, 相对的还是调用函数比较简单.
create table camulate (id SERIAL primary key,
base_number numeric,
base_100 numeric,
round numeric,
ceil_s numeric)
CREATE or Replace FUNCTION insert_s(numeric) RETURNS varchar
AS $$
BEGIN
insert into camulate (base_number,base_100,round,ceil_s) values ($1,$1+100,random()*$1,ceiling($1));
RETURN $1;
END;
$$
LANGUAGE plpgsql;
select insert_s(1);
select insert_s(1.4444);
select insert_s(2.7039);
另外可能还牵扯一个灵活性的问题,尤其函数,如果相关的功能变化,无论是JAVA 还是.NET 都需要重新修改程序和打包,部署. 如果采用了函数的方式,修改和更新都要较程序简单. 当然有些程序中无度不区分应用场景使用存储过程和函数,造成性能问题,的另说, 但不能将其归罪与存储过程和函数本身,终究是使用的那些人的水平才应该是被.......
另外最近QQ群满了,是在抱歉不能添加,这边会想办法处理,会开始清理一些僵尸同学,请见谅.
pgsql函数定时更新表_Postgresql PL/PGSQL 程序语言系列 1 (存储过程过时了吗,与函数)...相关推荐
- 面向初学者的 MQL4 语言系列之3——技术指标和内置函数
简介 这是"面向初学者的 MQL4 语言"系列的第三篇文章.在前两篇文章中, 我们学习了 MQL4 的基础知识,它们是进一步开发的基石.现在我们将学习使用内置 函数和用于技术指标的 ...
- R语言dplyr包nth、first、last函数获取向量特定值实战
R语言dplyr包nth.first.last函数获取向量特定值实战 目录 R语言dplyr包nth.first.last函数获取向量特定值实战 #导入dplyr包 #仿真数据
- c语言源程序总是由一个或多个函数组成,2016年中山大学卡内基梅隆大学C语言程序设计复试笔试仿真模拟题...
一.选择题 1. 有以下程序 则以下函数调用语句错误的是( ). A. B. C. D. 答:A [解析]返回值是int ; 声明了一个函数指针,它可以指向一个函数,该函数的形参是两个int ,是把函 ...
- PostgreSQL学习手册(PL/pgSQL过程语言)【转】
原文http://www.cnblogs.com/stephen-liu74/archive/2012/06/06/2312759.html 一.概述: PL/pgSQL函数在第一次被调用时,其函 ...
- PL/pgSQL 表达式
0.表达式的实现方式: 你写的: IF expression THEN ... 将被被服务器的主SQL执行器处理成一个查询: SELECT expression sql实际上执行的是PREPARE命令 ...
- 存储过程C语言与PL/pgSQL实现的效率对比
为什么80%的码农都做不了架构师?>>> PL/pgSQL已经有不少优化动作,比如 for i in 1..100000 loop null; end loop; 这是可以瞬间 ...
- PL/pgSQL之入门
PL/pgSQL介绍 plpgsql入门,介绍使用它有哪些优点以及一个HelloWorld. PL/pgSQL是一种用于PostgreSQL数据库系统的可载入的过程语言. 可以被用来创建函数和触发器过 ...
- PostgreSQL 11 新特性之 PL/pgSQL 增强
文章目录 PostgreSQL 11 增加了一个新的编程对象,存储过程(PROCEDURE).它与存储函数类似,但是没有返回值.存储过程还支持事务,参考文章"PostgreSQL 11 新特 ...
- 【PostgreSQL】官网学习使用 PL/pgSQL编写造数据脚本
文章目录 1. 前言 2. 成果 3. 创建与使用类似 Java map 的数据结构 3.1 声明数组 3.2 数组赋值 3.3 数组遍历 4. 如何打印调试信息 (可以用来生成回滚语句) 5. 后记 ...
最新文章
- 国内ntp时间服务器ip地址
- Expo 快速开启之旅
- Android开发把项目打包成apk
- 神策数据受邀出席,携手亚马逊云科技共建智能家居新航海时代
- 【JQuery】将Json Object序列化成URL的QueryString
- 【ArcGIS微课1000例】0013:ArcGIS创建色带图例(以GlobeLand30土地覆盖数据为例)
- windows7系统设置动态屏保的教程
- MethodInvokingJobDetailFactoryBean的并发问题
- EL表达式和JSTL标签库使用
- 《深入浅出DPDK》读书笔记(五):同步互斥机制
- ExtJS2.0开发与实践笔记[4]——Ext中的动画处理
- 如何在 win 10 上安装 IIS
- sftp访问提示Connection closed
- CKEditor编辑器的详细使用
- 【STM32单片机】贪吃蛇游戏设计
- LogiScope100MHZ 16通道逻辑分析仪
- 微信小程序小技巧分享
- css如何让文本框中的输入的文字始终垂直居中
- 使用遗传算法和模拟退火改进的K均值聚类
- Python中numpy.ix_ 的用法
热门文章
- mybatis-plus 会自动增加 order by_自动化常见问题:SCL、变压器、欧姆龙软件、机器人控制分享...
- Python中const类的实现
- Java9 jar兼容_java9新特性-6-多版本兼容jar包
- android 通过短信找回密码,我的android手机短信被我加密了,忘记密码了,在不刷机恢复出厂设置的情况下如何解决?急急急!!!!!...
- python批量读取图片并批量保存_Python实现批量读取图片并存入mongodb数据库的方法示例...
- py导入包异常跳出_Python:尝试从导入的包导入模块时出现“ModuleNotFoundError”
- C++安全方向(二):2.5 Base58_比特币钱包地址_算法分析
- python虚函数_Python进阶话题杂谈(十三)纯虚函数与抽象基类
- matlab画满载率渐变图,数学建模论文-校园公交车调度问题
- c语言期末考试题及其答案文档,c语言期末考试题及其答案