Delphi Firebird TIBQuery的插入返回… INTO操作如何实现?

2026-04-10 19:232阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计272个文字,预计阅读时间需要2分钟。

Delphi Firebird TIBQuery的插入返回… INTO操作如何实现?

我有一个带有Generator的Firebird 2.x数据库和一个生成关键字段的触发器。我需要从下面的查询中获取返回的值。INSERT INTO XXXX (vdate, description) VALUES ('VDate', 'Description') RETURNING vno INTO。

我有一个带有Generator的firebird 2.x数据库和一个生成关键字段的触发器.
我需要从下面的查询中获取返回的值.

Delphi Firebird TIBQuery的插入返回… INTO操作如何实现?

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.

本文共计272个文字,预计阅读时间需要2分钟。

Delphi Firebird TIBQuery的插入返回… INTO操作如何实现?

我有一个带有Generator的Firebird 2.x数据库和一个生成关键字段的触发器。我需要从下面的查询中获取返回的值。INSERT INTO XXXX (vdate, description) VALUES ('VDate', 'Description') RETURNING vno INTO。

我有一个带有Generator的firebird 2.x数据库和一个生成关键字段的触发器.
我需要从下面的查询中获取返回的值.

Delphi Firebird TIBQuery的插入返回… INTO操作如何实现?

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.