Необязательный выходной параметр вызывает InvalidOperationException, если в Enterprise lib 5.0 не отправлено значение - PullRequest
2 голосов
/ 13 марта 2012

У меня проблема с параметрами вывода в Microsoft Sequel Server 2008 с Enterprise Library 5.0

Я вызываю процедуру из своего кода (в C #), и она работала нормально, пока я не добавил необязательный выходной параметр в хранимый процесс для отслеживания обратной связи.

Код для вызова процедуры из моего кода:

string insertCommand = insertParams[0]; //the stored proc command
Object[] parameterValues = insertParams.Skip(1).ToArray(); //The parameters
int feedback = 1;
IDataReader reader = localDB.ExecuteReader(insertCommand, parameterValues); //ERROR
if (reader.Eead()){
  //stuf

Во время отладки параметрValues ​​содержит один объект. Я получаю ошибку

[System.InvalidOperationException] = {"Количество параметров не соответствует количеству значений для хранимой процедуры."}

Мой сохраненный процесс выглядит так:

ALTER PROCEDURE [dbo].[BS_GetDetails] 
@BusStop_ID     INT,
@FEEDBACK_CODE      INT=NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;

SELECT @FEEDBACK_CODE = 200
    //Do lots of other non-related things, mostly select statements

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

Я мог бы создать второй хранимый процесс для вызова первого, но это похоже на хакерское решение, и я подозреваю, что мне здесь не хватает чего-то тонкого ...

1 Ответ

0 голосов
/ 13 марта 2012

Вы смотрели на свой объект parameterValues ​​б / ф, который вы выполняете call? Я сделал необязательные параметры только с той парой ключ / значение, которая мне нужна.

cmd.Parameters.Add ( новый SqlParameter ("@ BusStopID", myBusStopID));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...