我正在使用PostgreSQL扩展(Apache AGE),需要从C语言函数中执行SQL命令。如何实现?
对于上下文,我正在开发一个修改数据库中某些表的扩展,并且我需要运行一些ALTER TABLE命令来添加或删除列,重命名列或更改列类型,这取决于某些条件。我已经有一个C函数来执行必要的计算,但我不知道如何从其中执行SQL命令。
下面是我的代码的简化版本:
PG_FUNCTION_INFO_V1(my_function);
Datum
my_function(PG_FUNCTION_ARGS)
{
// Perform some computations...
// Execute a SQL command (not sure how to do this)...
PG_RETURN_NULL();
}
谁能告诉我如何在PostgreSQL扩展中的C函数中执行SQL命令?任何帮助都将不胜感激!
4条答案
按热度按时间ht4b089n1#
您可以使用PostgreSQL为扩展开发人员提供的SPI(服务器编程接口)。
它是一组C语言函数和宏,提供了在PostgreSQL服务器中执行SQL命令和查询的方法。
使用SPI接口,C代码可以:
在此上下文中,
ALTER TABLE
函数可能如下所示:你可以在这里了解更多:SPI|SPI Examples
kmpatx3s2#
您可以使用SPI(服务器编程接口)。
服务器编程接口(SPI)使用户定义的C函数的编写者能够在其函数或过程中运行SQL命令。SPI是一组接口函数,用于简化对解析器、规划器和执行器的访问。SPI还进行一些内存管理。
示例:https://www.postgresql.org/docs/current/spi-examples.html
wqsoz72f3#
你可以通过使用服务器编程接口(SPI)在C函数代码中运行sql语句。我建议你阅读更多关于它的内容here,以确切地了解你需要什么来使你的代码工作。
0ejtzxu14#
可以通过PostgreSQL提供的服务器编程接口来实现
服务器编程接口为用户定义的C函数给予了在其函数或过程中运行SQL命令的能力。Postgres Document official
首先,你必须包括所需的头文件的#include“executor/spi.h”,然后在函数调用SPI_connect()中