gpt4 book ai didi

database - TParams.ParamRef 有什么用?

转载 作者:太空狗 更新时间:2023-10-30 01:47:44 25 4
gpt4 key购买 nike

db.pas单元包含TParam类的实现,代表数据库查询中的一个参数。

在使用大量参数测试查询时,我注意到 function TParam.ParamRef: TParam 需要花费大量时间,因为它调用 ParamByName 对参数进行未索引搜索.

实现很简单:

function TParam.ParamRef: TParam;
begin
if not Assigned(FParamRef) then
if Assigned(Collection) and (Name <> '') then
FParamRef := TParams(Collection).ParamByName(Name) else
FParamRef := Self;
Result := FParamRef;
end;

它可以返回 selfParamRef,所以这个想法是允许某种重定向。但它执行的速度很慢 ParamByName,被调用了很多,我不明白其目的。事实上,如果我将它修改为只返回 self 一切似乎都正常工作。

我看到的唯一用途是让多个同名参数都重定向到同一个实例。如果是这种情况,ParamByName 的性能损失肯定会超过此功能的好处。

ParamRef 未记录且 private 因此仅在 db.pas 单元内相关。此外,在线上也没有关于它的重要讨论。

有人遇到过同样的问题吗?

最佳答案

The only use I see for it would be to have several params of same name all redirect to same instance.

据我所知,这是正确的。在 Delphi 中,同一个参数可以多次使用,但底层数据库调用通常将它们视为单独的参数,因此您最终会得到同一个参数的多个实例。

SELECT * FROM SomeTable WHERE FirstName = :NAME or LastName = :NAME

enter image description here

两个参数都重定向到同一个实例,修改其中一个也设置另一个。

关于database - TParams.ParamRef 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49728988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com