PostgreSql大型对象和存储函数

本文关键字:存储 函数 对象 大型 PostgreSql | 更新日期: 2023-09-27 18:19:56

我的应用程序从连接到系统的设备接收JPG图像作为字节数组。这些需要写入PostgreSql 9.1数据库的Large Objects表中。我目前正在使用C#和Devart docConnect for PostgreSql库来访问我的数据库,一切都很好。问题是,将数据写入数据库(我需要更新2个表,再将图像字节写入大型对象表)需要多次访问数据库。我想减少代码访问数据库的次数,以加快速度。

我已经编写了一个存储函数,它对这两个表执行UPSERT。我想将图像字节作为字节数组参数传递给存储函数,并让存储函数将图像字节写入大型对象表。这可能吗?PostgreSql 9.1手册中关于服务器端函数的文档很单薄,我不确定该调用什么函数来阅读&写入数据。

感谢

Tony

PostgreSql大型对象和存储函数

与Oracle或Microsoft不同,Postgres不区分函数和存储过程。。。它只有函数(在postgres手册中查找函数……也很灵活,你可以调用c或java库和其他有趣的东西)。因此,您将创建一个函数(可能在PLPGSQL中)来接受一些参数,然后使用select语句作为函数(argument1、arg2等)来调用该函数

CREATE OR REPLACE FUNCTION deleteme
(deleteid integer)
RETURNS integer AS
$BODY$
BEGIN
delete from mytable_attrib where id = $1;
delete from mytable where id = $1;
return 0;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;

它的语言和语法略有不同,那么你可能会习惯于……不要将变量命名为与列名相同的名称,例如。。。或者准备转换到动态SQL,使用plpgsql在变量中构建一条语句,并将该变量作为SQL执行。

像函数一样执行它,而不是像oracle或MS所希望的exec语法。要删除ID行8,我现在可以使用

select deleteme(8)

苹果拼写检查将postgres更改为post-loit 的额外点数

我应该标记我的知识是8.4而不是9.1