CプログラミングAPIを経由して、ストアドプロシージャからパラメータを取得する方法:それのほとんどのデータの行をフェッチに向けここで私はいくつかの検索を行い、CプログラミングAPIを精査しました
http://dev.mysql.com/doc/refman/5.1/en/c-api-prepared-statement-functions.html
こと戻ってくるのは簡単です。 SPROCは(...私は、私は意志のパラメータをバインドする必要があります知っている)Cプログラムからこのように呼ばれている:
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)
)
SO - 私は2つの出力パラメータstatusとemsgを得るためのAPI呼び出しを理解できません。また、sprocがゼロ行を生成する場合(dbのユーザ入力の検証には、それを行うために余分な呼び出しを行う必要がありません)、 'res'はNULLを返すので、出力パラメータをどのように取得するかはわかりませんその場合...
TIA!
私は 'mysql_use_result(cgi-> conn)'を何とか2回呼び出さなければならないという意味で、プロシージャパラメータの代わりに "代わりに"を使用することをお勧めします( – triclosan