初识PostgreSQL存储过程
什么是存储过程, 百度百科是这么定义的:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
CREATE OR REPLACE FUNCTION 函数名(参数1,[整型 int4, 整型数组 _int4, …])
RETURNS 返回值类型 AS
$BODY$
DECLARE
变量声明
BEGIN
函数体
END;
$BODY$
LANGUAGE ‘plpgsql' VOLATILE;
下面的例子是要调用一个存储过程自动创建对应的一系列表:
代码如下:
CREATE OR REPLACE FUNCTION create_table_for_client(id int)
RETURNS integer AS
$BODY$
DECLARE
num int4 := 0;
sql "varchar";
BEGIN
sql := 'create table _' || id || '_company(id int, name text)';
EXECUTE sql;
sql := 'create table _' || id || '_employee(id int, name text)';EXECUTE sql;
sql := 'create table _' || id || '_sale_bill(id int, name text)';EXECUTE sql;
.......
return num;
END;
$BODY$ LANGUAGE plpgsql VOLATILE
相关推荐
-
PostgreSQL中调用存储过程并返回数据集实例
这里用一个实例来演示PostgreSQL存储过程如何返回数据集. 1.首先准备数据表 复制代码 代码如下: //member_category create table member_category(id serial, name text, discount_rate real, base_integral integer); alter table member_category add primary key(id); alter table member_category add ch
-
php连接与操作PostgreSQL数据库的方法
本文实例讲述了php连接与操作PostgreSQL数据库的方法.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: $pg=@pg_connect("host=localhost user=postgres password=sa dbname=employes") or die("can't connect to database."); $query="select * from employes order by serial_no&q
-
介绍PostgreSQL中的范围类型特性
PostgreSQL 9.2 的一项新特性就是范围类型 range types,通过这个名字你可以轻松猜出该类型的用途,它可让你为某列数据定义数值范围. 这个简单的特性可以让我们不需要定义两个字段来描述数值的开始值和结束值,一个最直观的例子就是: postgres# CREATE TABLE salary_grid (id int, position_name text, start_salary int, end_salary int); CREATE TABLE postgres# INSE
-
初识PostgreSQL存储过程
什么是存储过程, 百度百科是这么定义的:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程. Postgresql的存储过程语法结构如下: 复制代码 代码如下: CREATE OR REPLACE FUNCTION 函数名(参数1,[整
-
Mybatis调用PostgreSQL存储过程实现数组入参传递
前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: 复制代码 代码如下: CREATE OR REPLACE FUNCTION "public"."func_arr_update"(ids _int4)... 如上所示,参数是一个int数组,Mybatis提供了对调用存储过程的支持,那么PostgreSQL独有的数组类型作为存储过程的参数又
-
PostgreSQL存储过程用法实战详解
本文实例讲述了postgreSQL存储过程用法.分享给大家供大家参考,具体如下: 转了N多的SQL语句,可是自己用时,却到处是坑啊,啊,啊!!!!!!!!!!!!!!! 想写一个获取表中最新ID值. 上代码 CREATE TABLE department( ID INT PRIMARY KEY NOT NULL, d_code VARCHAR(50), d_name VARCHAR(50) NOT NULL, d_parentID INT NOT NULL DEFAULT 0 ); --inse
-
Postgresql 存储过程(plpgsql)两层for循环的操作
项目中遇到测试,需要造4500数据,而且需要分部门和日期,一个部门一天30条数据,剩下的铺垫数据可以一个部门一天100w左右数据,这里,每次变换部门,日期,需要操作至少300次,想到用存储过程写一个函数进行 首先,了解存储过程的语法: CREATE [ OR REPLACE ] FUNCTION name( [ [argmode] [argname]argtype[ { DEFAULT | = }default_expr] [, ...] ] ) [ RETURNSrettype | RETUR
-
PostgreSQL存储过程循环调用方式
需求描述 碰到需求,需要往表里插入5万条数据, 打算使用存储过程,但是postgres 数据库没有建存储过程的SQL, 所以使用函数来实现. 表数据结构完整性要求一次插入两条记录, 两条记录相互外键约束, record1 的 partner_id 字段值是 record2 的主键id的值, record2 的 partner_id 字段值是 record1 的主键id的值. 实现 create or replace function creatData() returns boolean as
-
Postgresql自定义函数详解
PostgreSQL函数也称为PostgreSQL存储过程. PostgreSQL函数或存储过程是存储在数据库服务器上并可以使用SQL界面调用的一组SQL和过程语句(声明,分配,循环,控制流程等). 语法: CREATE [OR REPLACE] FUNCTION function_name (arguments) RETURNS return_datatype AS $variable_name$ DECLARE declaration; [...] BEGIN < function_body
-
postgres 使用存储过程批量插入数据的操作
参考官方文档 create or replace function creatData2() returns boolean AS $BODY$ declare ii integer; begin II:=1; FOR ii IN 1..10000000 LOOP INSERT INTO ipm_model_history_data (res_model, res_id) VALUES (116, ii); end loop; return true; end; $BODY$ LANGUAGE
-
PostgreSQL数据库中跨库访问解决方案
PostgreSQL跨库访问有3种方法:Schema,dblink,postgres_fdw. 方法A:在PG上建立不同SCHEMA,将数据和存储过程分别放到不同的schema上,经过权限管理后进行访问. 方法A的示例如下: 测试1(测试postgres超级用户对不同schema下对象的访问) 查看当前数据库中的schema postgres=# \dn List of schemas Name | Owner -------------------+--------- dbms_job_pro
-
PostgreSQL之分区表(partitioning)
PostgreSQL有一项非常有用的功能,分区表,或者partitioning.当某个TABLE的记录非常的多,千万甚至更多的时候,我们其实需要将他分割成子表.一个庞大的TABLE,就像水果仓库杂乱无章地堆放着无数的苹果桃子和桔子,查找不方便,性能降低,比较合理的做法是将仓库分成三个子区域,分表放苹果桃子和桔子.一张大表就变成了三个小表的集合. 通过合理的设计,可以将选择一定的规则,将大表切分多个不重不漏的子表,这就是传说中的partitioning.比如,我们可以按时间切分,每天一张子表,比如
随机推荐
- JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
- Java读取邮件的方法
- Java concurrency集合之ConcurrentSkipListMap_动力节点Java学院整理
- JS实现选项卡实例详解
- php中session_unset与session_destroy的区别分析
- 同一个帐号不能同时登陆的问题
- 举例讲解如何判断JavaScript中对象的类型
- Python写的服务监控程序实例
- Python 网页解析HTMLParse的实例详解
- jquery实现可横向和竖向展开的动态下滑菜单效果
- 快速使用node.js进行web开发详解
- Java开发中的23种设计模式详解(推荐)
- Laravel5权限管理方法详解
- 无线VoIP技术的现状简介
- PHP迭代器接口Iterator用法分析
- JavaScript实现重力下落与弹性效果的方法分析
- Spring cloud config 配置文件加密方式
- python3.6根据m3u8下载mp4视频
- python自带tkinter库实现棋盘覆盖图形界面
- nodejs实现的简单web服务器功能示例