PostgreSQL存储过程初探

什么是存储过程, 百度百科是这么定义的:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是 数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

Postgresql的存储过程语法结构如下:

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

时间: 2024-10-08 08:31:48

PostgreSQL存储过程初探的相关文章

PostgreSQL存储过程返回数据集实例

这里用一个实例来演示PostgreSQL存储过程如何返回数据集. 1 首先准备数据表 <pre name="code" class="sql">//member_category create table member_category(id serial, name text, discount_rate real, base_integral integer); alter table member_category add primary key(

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

PostgreSQL的表,函数名称都是严格区分大小写的,所以在使用的时候没有注意大小写问题容易导致找不到函数名的错误,但最近两天我们发现,如果函数参数使用了自定义的数据类型,也会发生这个问题. 问题描述: 下面的示例测试代码: PWMIS.DataProvider.Data.AdoHelper db = MyDB.GetDBHelperByConnectionName("PostgreSQL");            IDataParameter para = db.GetParam

Mybatis调用PostgreSQL存储过程实现数组入参传递

注:本文来源于 < Mybatis调用PostgreSQL存储过程实现数组入参传递  > 前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: CREATE OR REPLACE FUNCTION "public"."func_arr_update"(ids _int4)... 1 如上所示,参数是一个int数组,Mybatis提

PostgreSQL的存储过程初探

什么是存储过程, 百度百科是这么定义的:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程. Postgresql的存储过程语法结构如下: <pre name="code" class="sql" s

PostgreSQL存储过程&lt;转&gt;

原创文章,转载请务必将下面这段话置于文章开头处(保留超链接).本文转发自Jason’s Blog,原文链接 http://www.jasongj.com/2015/12/27/SQL4_存储过程_Store Procedure/ 存储过程简介 什么是存储过程 百度百科是这么描述存储过程的:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,首次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果有)来执行它.它

PostgreSQL 存储过程/函数

1.有用的链接 postgresql 常用小函数 Postgresql数据库的一些字符串操作函数 PostgreSQL function里面调用function PostgreSQL学习手册(函数和操作符<二>) PostgreSQL的存储过程简单入门 2.建立块环境(执行环境) do language plpgsql $$ declare begin ... .. . end $$; 如 do language plpgsql $$ declare today date :=now(); y

Postgresql存储过程调试:PostgreSQL 之 Function NOTICE

转载自http://zhenghaoju700.blog.163.com/blog/static/13585951820116782843994/ 先安装一个PostgreSQL(见补充知识) 比较Oracle PL/SQL PL/SQL 中有 dbms_output.put_line("This is a log"); 可以进行简单的调试 当然我们PostgreSQL 也有相应的函数 RAISE NOTICE 'This is a log %', param: % 占位符 param

PostGreSQL存储过程

1 返回结果集的存储过程 -- drop FUNCTION getall();CREATE or REPLACE FUNCTION getall() RETURNS SETOF users  AS$BODY$SELECT * from  users;$BODY$language SQL;     --  这里使用的SQL 2 返回单个数值的的存储过程 -- drop FUNCTION adduser2(CHARACTER VARYING);CREATE or REPLACE FUNCTION a

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 ); --insert into department values(1,'001','office