问题标签 [ecpg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
122 浏览

postgresql - Postgres ECPG char[] 与 VARCHAR[]

我们正在使用 ECPG 和主机变量连接到 postgres 数据库。我们试图了解何时使用char[]vsVARCHAR[]作为我们的主机绑定变量。该文档没有提供任何优点/缺点或用例。

例如:

给定列

我为什么要使用

与说

谢谢!

https://www.postgresql.org/docs/current/ecpg-variables.html

0 投票
1 回答
50 浏览

c - Postgres ECPG:在 main() 之外添加一个函数会破坏程序

我已经使用我的 C 应用程序成功连接并从 Postgresql 获取数据。我的connector.pgc文件如下所示:

当然,除了用户名/密码/schema_name/等。替换为实际值。然后我执行以下操作:

我的操作系统是默认的CentOS 8。
ecpg --version返回ecpg (PostgreSQL) 13.2
psql --version返回psql (PostgreSQL) 12.8

该程序编译良好,我可以毫无问题地连接,我知道这是printf提取正确的数据库名称的方式,并且我还运行了其他 SQL SELECTS 来确认数据。

但是,一旦我取消注释该int connect()函数,即使不使用它,它也会在实际程序之前被调用 3 次,我不知道为什么。更准确地说,我看到字母 A 被打印了 3 次。此外,printf不再显示正确的名称,而是dbname为空。

我尝试将int connect()函数放到一个单独的connect.c文件中,然后通过 将它与这个程序链接在一起,connect.h结果是一样的。

如果我将内容main()放入connect(),然后调用它,则该过程将无限期挂起。

真的,我很茫然,我什至不知道从哪里开始,因为这种情况似乎是不可能的。我检查了connector.cECPG 生成的文件,没有其他调用。我可以在网上找到的大多数参考资料只包含 main() 函数,在极少数情况下它们不包含,没有提到任何远程类似的问题。

关于发生了什么的任何想法?

0 投票
0 回答
30 浏览

c - 使用 postgres ecpg 创建和调用存储过程

我正在尝试创建一个小示例来从 c 应用程序运行存储过程,并且我正在使用嵌入式 sql 进行使用 ecpg 的 postgres。到目前为止,我能够连接和断开我的 postgres 数据库。问题是我不知道如何创建存储过程并从我的 c 应用程序中调用它。我找不到任何使用 ecpg 的示例。如果有人可以给我一个小应用程序或指导我如何做到这一点,那将会很有帮助。