|
|
|
Параметры команды
|
|||
|---|---|---|---|
|
#18+
Есть процедура БД у которой ряд параметров (например 5 штук). Все параметры обязательные (без определения значения по умолчанию). У команды DbCommand задано столько же параметров (5 штук) с нужными типами данных. Если у всех параметров заданы значения (не null), то процедура отрабатывает нормально. А если хотя бы один из параметров равен null, то выскакивает ошибка "Ошибочно число или типы аргументов при обращении к процедуре". Это возникает из-за того что параметры передаются в процедуру по имени, а не по позиции. И если параметр равен null, то такой параметр не передается. А так как он обязательный, то и ошибка возникает. Как настроить DbCommand или DbParameter, чтобы при вызове DbCommand.ExecuteNonQuery() подставлялись все параметры вне зависимости от значения? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2007, 19:00 |
|
||
|
Параметры команды
|
|||
|---|---|---|---|
|
#18+
Код достаточно сложный, а результат я примерно описал и проверил - дело в значениях параметров. Если 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2007, 21:09 |
|
||
|
Параметры команды
|
|||
|---|---|---|---|
|
#18+
это вы на чем пишете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2007, 10:22 |
|
||
|
Параметры команды
|
|||
|---|---|---|---|
|
#18+
begin ALDI_CurrencyPkg.UpdateRecord(PID=>:PID, PBMAINCURRENCY=>:PBMAINCURRENCY, PBCURRENCYPRICEDEFAULT=>:PBCURRENCYPRICEDEFAULT); end; если это c#... то я - кенгуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2007, 13:10 |
|
||
|
Параметры команды
|
|||
|---|---|---|---|
|
#18+
автор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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2007, 14:37 |
|
||
|
Параметры команды
|
|||
|---|---|---|---|
|
#18+
я когда просил показать код, я имел в виду клиентский код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2007, 14:41 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=34589393&tid=1352749]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
167ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 500ms |

| 0 / 0 |
