当前位置 : 主页 > 编程语言 > delphi >

delphi – Firebird TIBQuery插入返回… INTO

来源:互联网 收集:自由互联 发布时间:2021-06-23
我有一个带有Generator的firebird 2.x数据库和一个生成关键字段的触发器. 我需要从下面的查询中获取返回的值. INSERT INTO XXXX (vdate,description) values ('"+ VDate +"','"+ Description +"') returning vno INTO
我有一个带有Generator的firebird 2.x数据库和一个生成关键字段的触发器.
我需要从下面的查询中获取返回的值.

INSERT INTO XXXX (vdate,description) values ('"+ VDate +"','"+ Description +"') returning vno INTO :ParamVoucherNo

我尝试了以下代码的几个版本,但它不会破坏我得到

Dynamic sql error sql error code = -104

是否真的可以使用TIBQuery在delphi中获取返回值?

Query1->SQL->Clear();
Query1->SQL->Add("INSERT INTO XXXX (vodate,description) values ('"+ VDate +"','"+ Description +"') returning vno INTO :ParamVoucherNo");

Query1->Params->ParamByName("ParamVoucherno")->ParamType = ptResult;
Query1->Params->ParamByName("ParamVoucherno")->DataType = ftInteger;
Query1->Params->ParamByName("ParamVoucherno")->Value = "";
Query1->Prepare();
Query1->ExecSQL();

有什么建议?

来自Firebird README.returning:

The INTO part (i.e. the variable list) is allowed in PSQL only (to
assign local variables) and rejected in DSQL.

由于IBX使用DSQL,您应该从查询中排除INTO部分.

INSERT … RETURNING for DSQL看起来与调用存储过程相同,后者返回结果集.因此,您必须使用Open而不是ExecSQL.

网友评论