是否可以在Delphi 6 BDE TUpdateSQL.ModifySQL中编写execute procedure (...with arguments...)
(用于Firebird 2.1数据库)?我尝试了,但即使是最简单的SQL过程,我也收到了错误消息Update failed
。那么 - 对于可以在ModifySQL中执行的语句是否存在一些限制?我知道(并且我正在广泛使用),可以在Delphi IBX TIBDataSet.ModifySQL(或IBX组件的其他类似属性)中编写execute procedure
(以及更复杂的语句)。我应该避免在TUpdateSQL中执行过程,还是应该考虑一些技巧?是否有可能在Delphi 6 BDE TUpdateSQL中执行SQL过程?
-2
A
回答
1
RenéHoffmann的想法是对的 - 可以从update语句执行过程。例如。下面的语句是接受MODIFYSQL:
update target_table set
id = :id,
field1 = :field1,
field2 = (select proc.field2 from additional_actions_procedure(:field2, :param1, :param2) proc)
where
id = :old_id
德尔福单位DBTables
包含这可以解释为什么引发异常的代码:
procedure TUpdateSQL.ExecSQL(UpdateKind: TUpdateKind);
begin
with Query[UpdateKind] do
begin
Prepare;
ExecSQL;
if RowsAffected <> 1 then DatabaseError(SUpdateFailed);
end;
end;
所以受影响的行计数发生。但显然DBTables
受影响行的会计与IBExpert中受影响的行数不同。 IBExpert统计实际受影响的行,它们受execute procedure
,update
陈述或其他陈述的影响。但DBTables
计数(我的猜测)只有update
语句更新的目标表中的行。 Delphi代码的更多调查可以揭示更准确的解释。
此评论http://www.delphisources.ru/pages/faq/base/tupdatesql_many_queries.html建议编辑DBTables
文件。
+0
我不知道Firebird如何计算受影响的行(请参阅我的配置文件的脚注,原因是),但似乎没有'SET NOCOUNT OFF'就像存储过程的选项一样。因此,Delphi中所有数据库组件都可能缺少受影响的行数。只要他们不克服这一点。 – Victoria
相关问题
- 1. 相当于Delphi 2010 dbExpress中的TUpdateSQL?
- 2. 是否有可能在C#中使用BDE创建的表格?
- 3. BDE与Delphi XE
- 4. 是否有可能通过UIAutomation在UIWebView中执行JavaScript?
- 5. AspectJ - 是否有可能执行建议?
- 6. 是否可以在SQL中执行查找功能?
- 7. 是否有可能在SQL Server 2000中执行返回整行的GROUP BY?
- 8. 是否有可能在远程服务器上执行ruby-debug?
- 9. 是否有可能与多线程执行JavaScript功能
- 10. 是否可以使用存储过程执行sql注入?
- 11. SQL Server - 是否有可能逐步通过存储过程
- 12. 是否有可能在这个sql中有逻辑过滤器?
- 13. 是否有可能停止执行运行asp程序?
- 14. 执行子过程中的JavaEE 6
- 15. 在Visual Studio可执行文件中执行SQL存储过程
- 16. 是否有可能获得过去执行的查询?
- 17. 是否有可能通过共享扩展执行API调用
- 18. 是否有可能通过C#执行MDA转换
- 19. 是否有可能在Symfony3
- 20. 是否有可能在MySQL上运行drupal 6 5.6
- 21. 是否有可能在SQL中有“空行”?
- 22. BDE到ADO转换DELPHI 5
- 23. 是否有可能在Robotframework中执行钩子后,像Ruby/Cucumber
- 24. 是否有可能在Ruby中执行本地计时器?
- 25. 是否有可能在MySQL中执行一个字符串?
- 26. 是否有可能在PHP返回语句中执行赋值?
- 27. MvcContrib GridModel:是否有可能在GridModel中执行ActionSyntax
- 28. 是否有可能直接在视图中执行
- 29. 是否有可能在Flex中执行轻量级REST调用?
- 30. 是否有可能在F#中执行函数重载?
避免BDE,期间。你正在浪费你的时间而不是从它升级。 – MartynA
它不是我的决定。 – TomR
在TUpdateSQL中?不,TUpdateSQL需要一个'UPDATE'语句(这就是为什么叫做“TUpdateSQL” - 这个名字的** UpdateSQL **部分应该清楚)。 'TStoredProcedure'用于执行存储过程。 –