PostgreSQL用C完成存储过程例子
发布时间:2020-12-13 17:19:38 所属栏目:百科 来源:网络整理
导读:目的:用C完成一个存储过程例子,存储过程实现对表某一段进行update。 准备工作 1、安装数据库 2、建立表test highgo=# create table test(id int,name text,label int);CREATE TABLE 3、建立C文件,C代码如下: #include "postgres.h"#include "executor/spi
目的:用C完成一个存储过程例子,存储过程实现对表某一段进行update。 准备工作 1、安装数据库 2、建立表test highgo=# create table test(id int,name text,label int); CREATE TABLE 3、建立C文件,C代码如下: #include "postgres.h" #include "executor/spi.h" #include "utils/builtins.h" #ifdef PG_MODULE_MAGIC PG_MODULE_MAGIC; #endif int mydelete(int key); int mydelete(int key) { char command[128]; //视命令长短建立相应大小的数组 int ret; int proc; //对表数据操作的行数 /* 将命令赋值到command */ sprintf(command,"update test set label = 0 where id = %d and label = 1; ",key); SPI_connect(); //内部链接 ret = SPI_exec( command,0); //执行操作 proc = SPI_processed; //为行数赋值 SPI_finish(); //中断连接 return (proc); //将操作行数作为返回结果 } 数据库api参考文档:http://www.postgresql.org/docs/9.4/static/spi.html 编译到安装 4、gcc编译 gcc -fpic -I/opt/HighGo/db/20150401/include/postgresql/server/ -shared -o myapi.so myapi.c 5、复制到lib目录下 cp myapi.so /opt/HighGo/db/20150401/lib/postgresql/ 6、加载到服务器 highgo=# load 'myapi'; LOAD 7、建立函数 highgo=# create function mydele(integer) returns integer as '$libdir/myapi.so','mydelete' language c strict; CREATE FUNCTION highgo=# 8、效果 highgo=# insert into test values (1,'jim',1); INSERT 0 1 highgo=# insert into test values (2,'tom',1); INSERT 0 1 highgo=# select * from test; id | name | label ----+------+------- 1 | jim | 1 2 | tom | 1 highgo=# select mydele(1); mydele -------- 1 (1 row) highgo=# select * from test; id | name | label ----+------+------- 2 | tom | 1 1 | jim | 0 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |