powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Параметры команды
9 сообщений из 9, страница 1 из 1
Параметры команды
    #34588731
Sh_ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть процедура БД у которой ряд параметров (например 5 штук). Все параметры обязательные (без определения значения по умолчанию). У команды DbCommand задано столько же параметров (5 штук) с нужными типами данных. Если у всех параметров заданы значения (не null), то процедура отрабатывает нормально. А если хотя бы один из параметров равен null, то выскакивает ошибка "Ошибочно число или типы аргументов при обращении к процедуре". Это возникает из-за того что параметры передаются в процедуру по имени, а не по позиции. И если параметр равен null, то такой параметр не передается. А так как он обязательный, то и ошибка возникает.

Как настроить DbCommand или DbParameter, чтобы при вызове DbCommand.ExecuteNonQuery() подставлялись все параметры вне зависимости от значения?

Спасибо.
...
Рейтинг: 0 / 0
Параметры команды
    #34588734
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код покажите.
...
Рейтинг: 0 / 0
Параметры команды
    #34588815
Sh_ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код достаточно сложный, а результат я примерно описал и проверил - дело в значениях параметров. Если 2 из 5-ти параметров null, то формируется текст примерно такого вида:
begin
ALDI_CurrencyPkg.UpdateRecord(PID=>:PID, PBMAINCURRENCY=>:PBMAINCURRENCY, PBCURRENCYPRICEDEFAULT=>:PBCURRENCYPRICEDEFAULT);
end;

То есть из 5-ти параметров используется только 3.

Если чем-то поможет, то объявление процедуры такое:
PROCEDURE UpdateRecord(
pID NUMBER
, pSNAME VARCHAR2
, pSCAPTION VARCHAR2
, pBMAINCURRENCY NUMBER
, pBCURRENCYPRICEDEFAULT NUMBER
)

Используются классы DbCommand и DbParameter. База данных Oracle.
...
Рейтинг: 0 / 0
Параметры команды
    #34589107
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это вы на чем пишете?
...
Рейтинг: 0 / 0
Параметры команды
    #34589369
Sh_ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
C#
...
Рейтинг: 0 / 0
Параметры команды
    #34589393
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
begin
ALDI_CurrencyPkg.UpdateRecord(PID=>:PID, PBMAINCURRENCY=>:PBMAINCURRENCY, PBCURRENCYPRICEDEFAULT=>:PBCURRENCYPRICEDEFAULT);
end;


если это c#... то я - кенгуру.
...
Рейтинг: 0 / 0
Параметры команды
    #34589569
Sh_ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторbegin
ALDI_CurrencyPkg.UpdateRecord(PID=>:PID, PBMAINCURRENCY=>:PBMAINCURRENCY, PBCURRENCYPRICEDEFAULT=>:PBCURRENCYPRICEDEFAULT);
end;


если это c#... то я - кенгуру.

Выше же я писал авторИспользуются классы DbCommand и DbParameter. База данных Oracle .
Естественно что процедура в пакете Oracle и соответственно используется PL SQL.
А клиент на C#. Ну и на всякий случай ADO 2.0, Framework 2.0, VisualStudio 2005.
...
Рейтинг: 0 / 0
Параметры команды
    #34589577
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я когда просил показать код, я имел в виду клиентский код
...
Рейтинг: 0 / 0
Параметры команды
    #34590778
K. Oleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В параметры где null подставь DBNull.Value
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Параметры команды
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]