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

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

Спасибо.
...
Рейтинг: 0 / 0
11.06.2007, 19:01
    #34588734
winsky!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры команды
код покажите.
...
Рейтинг: 0 / 0
11.06.2007, 21:09
    #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
12.06.2007, 10:22
    #34589107
winsky!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры команды
это вы на чем пишете?
...
Рейтинг: 0 / 0
12.06.2007, 12:59
    #34589369
Sh_ura
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры команды
C#
...
Рейтинг: 0 / 0
12.06.2007, 13:10
    #34589393
winsky!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры команды
begin
ALDI_CurrencyPkg.UpdateRecord(PID=>:PID, PBMAINCURRENCY=>:PBMAINCURRENCY, PBCURRENCYPRICEDEFAULT=>:PBCURRENCYPRICEDEFAULT);
end;


если это c#... то я - кенгуру.
...
Рейтинг: 0 / 0
12.06.2007, 14:37
    #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
12.06.2007, 14:41
    #34589577
winsky!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры команды
я когда просил показать код, я имел в виду клиентский код
...
Рейтинг: 0 / 0
13.06.2007, 10:00
    #34590778
K. Oleg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры команды
В параметры где null подставь DBNull.Value
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Параметры команды / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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