Можно ли безопасно удалить параметр из TADOCommand Delphi во время выполнения - PullRequest
0 голосов
/ 11 октября 2010

My Delphi 2006 TADOCommand имеет свойства

<b>CommandText</b> (including parameters),  
    <b>Prepared</b> (True),  
    <b>ParamCheck</b> (True)

, заданные во время разработки.

Есть ли у меня способ удалить некоторые из них? Параметры во время выполнения без необходимости изменения CommandText , чтобы учесть эти изменения.Это желательно в том случае, если некоторые столбцы таблицы, на которые ссылаются параметры, не нуждаются в обновлении / вставке.

Я думаю о чем-то вроде

TADOCommand.Parameters.ParamByName('MyParam').SafelyRemove;

Большое спасибо
Дункан

Ответы [ 3 ]

4 голосов
/ 12 октября 2010

Каждый элемент в коллекции параметров соответствует маркеру параметра в тексте команды. Это как API для этого маркера. Удаление элементов из параметров не приведет к удалению соответствующего маркера. Если вам не нужно прикасаться к какому-либо полю в тексте команды, вам нужно изменить текст команды и удалить соответствующий маркер параметра.

Когда текст команды подготовлен, СУБД создала план выполнения команды и выделила некоторые ресурсы, необходимые для выполнения команды. Если вы измените текст команды, то СУБД должна построить новый план выполнения команды.

Вроде того ...

0 голосов
/ 22 октября 2010

В случае, когда текст команды динамически обновляемый, я обычно работаю с такими параметрами: * Parameters.Clear; Parameters.ParseSQL (ADOCommand.CommandText, true); * автоматически создаст список параметров с правильными именами параметров.

0 голосов
/ 12 октября 2010

Поскольку заполнители параметров (: PARAMn) встроены в текст SQL, я не вижу, как можно добавлять или удалять параметры без изменения CommandText.У вас будет несоответствие.

...