加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – Firebird TIBQuery插入返回… INTO

发布时间:2020-12-15 09:09:21 所属栏目:大数据 来源:网络整理
导读:我有一个带有Generator的firebird 2.x数据库和一个生成关键字段的触发器. 我需要从下面的查询中获取返回的值. INSERT INTO XXXX (vdate,description) values ('"+ VDate +"','"+ Description +"') returning vno INTO :ParamVoucherNo 我尝试了以下代码的几
我有一个带有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 +"') 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读