gpt4 book ai didi

mysql - 如何通过 C Programming API 从存储过程中获取参数

转载 作者:行者123 更新时间:2023-11-29 07:02:45 25 4
gpt4 key购买 nike

我已经进行了一些搜索并仔细检查了此处的 C 编程 API:

http://dev.mysql.com/doc/refman/5.1/en/c-api-prepared-statement-functions.html

其中大部分用于获取返回的数据行,这很容易。 sproc 正在从 C 程序中这样调用(我知道我应该绑定(bind)我将要绑定(bind)的参数......):

sprintf( cmd, "CALL get_graph_data( \"%s\", \"%s\");", symbol, scope );

if (mysql_query(conn, cmd)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}

res = mysql_use_result(conn);
if( res == NULL ) { ; // how do I get output parameters in this case ? umm...
} else {
num_fields = mysql_num_fields(res);
while ((row = mysql_fetch_row(res)) != NULL)
{
do stuff
}
}

我调用的 SPROC 如下所示:

create procedure get_graph_data (
symbol varchar(20),
period varchar(5),
OUT status SMALLINT,
OUT emsg varchar(255)
)

所以 - 我无法弄清楚获取两个输出参数状态和 emsg 的 API 调用。此外,在存储过程产生零行的情况下(必须在数据库中对用户输入进行一些验证,而不必进行额外的调用来执行此操作)然后“res”返回 NULL,因此不确定如何获取输出参数那种情况...

TIA!

最佳答案

以这种方式尝试

首先 CALL get_graph_data('xxx','yyy', @a, @b);然后 select @a, @b;

UPDT您可以使用简单的接口(interface)而不是 Prepared Statement API。但是你应该设置 enable multiple-statement execution获取 statusemsg 的值。然后“不同步”错误应该消失。

关于mysql - 如何通过 C Programming API 从存储过程中获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9192697/

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