【发布时间】:2017-08-14 20:09:41
【问题描述】:
是否可以在 Delphi 6 BDE TUpdateSQL.ModifySQL 中编写 execute procedure (...with arguments...)(用于 Firebird 2.1 数据库)?我已经尝试过,但即使对于最简单的 SQL 过程,我也会收到错误消息 Update failed。那么——ModifySQL 中可以执行的语句是否有一些限制?我知道(并且我正在广泛使用),可以在 Delphi IBX TIBDataSet.ModifySQL(或 IBX 组件的其他类似属性)中编写 execute procedure(和更复杂的语句)。我应该避免在 TUpdateSQL 中执行过程还是应该考虑一些技巧?
【问题讨论】:
-
避免 BDE,句号。你是在浪费你的时间而不是升级。
-
在 TUpdateSQL 中?不,TUpdateSQL 需要一个
UPDATE语句(这就是为什么它被称为TUpdateSQL- 名称的 UpdateSQL 部分应该清楚)。TStoredProcedure用于执行存储过程。 -
@Ken - 下马。 TUpdateSQL 要求每个 InsertSQL/ModifySQL/DeleteSQL 都有一条 SQL 语句。请注意,
TUpdateSQL需要UPDATE语句,并且考虑到 ModifySQL 属性中实际需要UPDATE语句时,从名称上可以明显看出这一点。因此,例如,不是MODIFY声明!现在,TStoredProc为执行存储过程的 SQL 语句提供了一个方便的包装器,但是应该可以使用 SQL 语句(例如EXEC PROCNAME())来执行存储过程。 -
你并不想屈尊俯就。我无意冒犯。 :shrug: 我只是指出 UPDATE 语句的使用与组件类型名称没有直接关系(它也具有 INSERT 和 DELETE 语句的属性)。也许您的 IIRC 是错误的,毕竟,“ModifySQL”不可能避免“需要 [for] 一个单独的 TUpdateSQL”。 ModifySQL 是 TUpdateSQL 的一个属性。但是,它可能会避免需要单独的 TQuery,否则您可能会使用它来执行 UPDATE(即使 UPDATE 语句不是查询。看图)
-
您是否尝试在
UPDATE语句中包含存储过程调用,该语句本身不会更新任何内容?