2015-01-15 3 views
0

Я пытаюсь вытащить DateTime из хранимой процедуры на моем SQL Server.Получение DateTime из ошибки хранимой процедуры

Хранится переменная процедура:

@TempDateTime DateTime = '' OUTPUT 
SET @TempDateTime = GETDATE() 

Line, что ошибки в моем C# CF 2,0 Программы

DateTime tempDT = Convert.ToDateTime(sqlcmd.Parameters["@TempDateTime"].Value); 

Я получаю следующее сообщение об ошибке, и я в потерянном на то, что она есть. Может ли моя хранимая процедура отправлять обратно null? Я выполняю хранимую процедуру, и она работает нормально, на другой бит кода. Получение DateTime и вставка его в таблицу, но ошибки при попытке получить DateTime var.

System.IndexOutOfRangeException был необработанное
Сообщение = "{0} {1} {2} 'не содержится в этом {3}."

StackTrace:
на System.Data.SqlClient.SqlParameterCollection.RangeCheck()
на System.Data.SqlClient.SqlParameterCollection.get_Item()
на Missouri_Scanning_Utility.Form1.updateDatabase()
в Missouri_Scanning_Utility.Form1 .tmrUpdateDatabase_Tick()
на System.Windows.Forms.Timer._WnProc()
на System.Windows.Forms.ApplicationThreadContext._InternalContextMessages()
на Microsoft.AGL.Forms.EVL.EnterMainLoop()
в System.Windows.Forms.Application.Run()
в Missouri_Scanning_Utility.Program.Main()

+0

Я редактировал свой титул. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

Определяли ли вы свой параметр '@ TempDateTime' в вашем коде C# как вывод? 'Direction = ParameterDirection.Output' –

+0

@JasonFaulkner Я только что сделал это, и теперь эта строка кода получает ту же ошибку, что и выше. – Lgwells1

ответ

0

При определении значения параметров для вашего посыла на ваш звонок, вы должны объявить OUTPUT параметры соответственно.

Поскольку у вас нет соответствующих частей коды, размещенной здесь общая процедура для этого:

var tempDateTimeParam = new SqlParameter("@TempDateTime", SqlDbType.DateTime) 
{ 
    Direction = ParameterDirection.Output 
}; 

myCommand.CommandType = CommandType.StoredProcedure; 
myCommand.Parameters.Add(tempDateTimeParam); 
// Add additional params. 

// Execute stored proc. 

// Read result from output param which should now have a value. 
var tempDateTimeValue = (DateTime)tempDateTimeParam.Value; 
+0

это было. Моя линия выглядит немного иначе, но теперь все хорошо. sql.cmd.Parameters.Add ("@ TempDateTime", SqlDbType.DateTime) .Direction = ParameterDirection.Output; – Lgwells1

+0

@ Lgwells1 - Рад, что это было что-то простое. Приветствия. –

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