gpt4 book ai didi

c++ - 从 Oracle PL/SQL 获取数据到主机阵列

转载 作者:行者123 更新时间:2023-11-28 02:01:32 25 4
gpt4 key购买 nike

我想将表中的一列数据提取到主机数组中。在我的表中,DOB 是一个整数类型。我的 C++ 代码如下所示:

EXEC SQL BEGIN DECLARE SECTION;
int birthdays[10];
EXEC SQL END DECLARE SECTION;

...//Code to connect with the database

EXEC SQL EXECUTE
DECLARE
...
BEGIN
SELECT DOB INTO :birthdays FROM DRIVER_LICENSE WHERE DL_NUMBER < 10;
END

DOB 列是整数类型,DRIVER_LICENSE 表中的 DL_NUMBERS 从 0 开始编号。当我尝试编译它时,出现错误“PLS-S-00597,INTO 列表中的表达式”BIRTHDAYS' 是类型错误"

如果不在 EXECUTE 中,我可以运行选择。 C++代码:

EXEC SQL BEGIN DECLARE SECTION;
int birthdays[10];
EXEC SQL END DECLARE SECTION;

SQL EXEC SELECT DOB INTO :birthdays FROM DRIVER_LICENSE WHERE DL_NUMBER < 10;

给我 DRIVER_LICENSE 表的 DOB 列中的数字。

我正在尝试使用 PL/SQL 来整合大量 SQL 调用,以尽量减少与服务器的通信。我可以通过遍历游标并一次为生日数组元素赋值,将信息放入 C++ 生日数组,但这似乎效率很低。

最佳答案

我对你的 C++ 库/框架/任何调用上下文一无所知,但在 PL/SQL 中,select into 期望 a single row result set并且绑定(bind)变量必须是标量变量。 int birthdays[10] 看起来像一个数组,因此第一个示例中的 PL/SQL 编译器错误消息非常有意义。

我不认为你的第二个例子可以工作,除非魔法吟唱 SQL EXEC 以某种方式在 PL/SQL 上下文中隐式运行(并引发与第一个例子相同的 PL/SQL 编译器错误) . select into 是一个 PL/SQL-only,应该在 SQL 上下文中引发一个 SQL 解析器错误。

看起来你希望获得a multi row result set ,因此在 PL/SQL 中,您应该改用 select into bulk collect

您应该更多地研究您的 C++ 调用上下文 SQL 合作文档,以了解它期望如何绑定(bind)到数组中。

关于c++ - 从 Oracle PL/SQL 获取数据到主机阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39357994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com