2013-07-15 3 views
-7

У меня есть простая хранимая процедура, которая принимает 6 параметров. Допустим, что они @a, @b, @c, @d, @e, @f, и все они являются необязательными со значением по умолчанию null.Опустить именованные параметры из OleDbCommand

Мне нужно знать, как вызвать хранимую процедуру с только некоторыми этих параметров. Я знаю общие этапы:

  1. Определите соединение и откройте его.

  2. Определение команды объект

  3. Добавить параметры объекта команды.

  4. Выполнение команды.

Сейчас для каждого из @a, @b, @c, @d, @e, @f я использую Parameters.Add() добавить этот параметр.

Вопрос: что если я хочу вызвать хранимую процедуру только с @a и @f, мне нужно, чтобы Add() были ли другие параметры? Или, если я добавлю только 2 параметра, как хранится в хранимой процедуре, какие параметры я поставил?

+3

_ «Что делать, если я хочу, чтобы вызвать хранимую процедуру только с @a и @f» _ - попробовать? – CodeCaster

+0

@CodeCaster, пожалуйста, не предполагайте, что каждый, кто задает вопрос, имеет неограниченное время. Я отлаживаю сложную ошибку в производственной среде, которая может иметь дюжину причин. У меня нет времени, чтобы настроить тесты на моей стороне и проверить каждый сценарий. –

+11

_ «У меня нет времени, чтобы настроить тест на моей стороне и протестировать каждый сценарий». _ - так что технически вы выполняете аутсорсинг своей отладки. Умная. – CodeCaster

ответ

6

Вопрос: Что делать, если я хочу, чтобы вызвать хранимую процедуру только с @a и @f,

Пока другие не являются обязательными SP будут выполняться без каких-либо ошибок.

В этом случае мне нужно также добавить другие параметры (b, c, d, e)?

Нет, вы этого не сделаете.

Если я добавлю только 2 параметра, как хранимая процедура знает порядок?

Порядок здесь не важен. Имя параметра. Он должен соответствовать таковому из декларации SP.

+0

Хорошо, если я просто добавлю @a и @d. как хранимая процедура знает, что я прошел эти 2? он просматривает фактические имена параметров, переданные для .NET, чтобы соответствовать им с его собственным? например, «@a» на @a? –

+0

Да, это точно, как это работает. – MarcinJuraszek

+3

@Joe из [документации] (http://msdn.microsoft.com/en-us/library/yy6y35y8.aspx): _ «При использовании параметров с помощью SqlCommand для выполнения хранимой процедуры SQL Server имена параметры, добавленные в коллекцию параметров, должны совпадать с именами маркеров параметров в хранимой процедуре. "_ – CodeCaster

0

поскольку вы сказали, что все параметры являются необязательными (разрешить null); поэтому даже если вы вызываете SP без каких-либо параметров, он должен работать нормально.

0

Если вы определяете свои параметры как обнуляемые в своем proc, у вас не будет никаких проблем, запустив его.

Как другие пишут важной частью является то, что вы называете ваши параметры, как они названы в процедуре

Смежные вопросы