可以在运行时安全地从Delphi TADOCommand中删除参数

时间:2010-10-11 18:57:49

标签: delphi ado delphi-2006

我的Delphi 2006 TADOCommand 有它的

    CommandText (including parameters),  
    Prepared (True),  
    ParamCheck (True)

属性全部在设计时设置。

我有办法在运行时删除其中的一些参数,而无需更改 CommandText 以适应这些更改。在参数引用的某些表列不需要更新/插入的情况下,这是可取的。

我正在考虑

的内容
TADOCommand.Parameters.ParamByName('MyParam').SafelyRemove;

非常感谢,
邓肯

3 个答案:

答案 0 :(得分:4)

Parameters集合中的每个项目对应于命令文本中的参数标记。它就像这个标记的API。从参数中删除项目不会删除相应的标记。如果您不需要触摸命令文本中的某些字段,则必须修改命令文本并删除相应的参数标记。

当准备好命令文本时,DBMS已经构建了命令执行计划并分配了一些命令执行所需的资源。如果要更改命令文本,则DBMS必须构建新的命令执行计划。

有点......

答案 1 :(得分:0)

因为参数占位符(:PARAMn)嵌入在SQL文本中,所以我看不到如何在不更改CommandText的情况下添加或删除参数。你会不匹配。

答案 2 :(得分:0)

如果命令文本是动态更新的,我通常使用这样的参数:* Parameters.Clear; Parameters.ParseSQL(ADOCommand.CommandText,true); * 它将自动创建具有正确参数名称的参数列表。