2015-08-09 3 views
0

Я использую следующий код для вызова моей хранимой процедуры с помощью TADOStoredProc типапараметров хранимой процедуры не найден

MySP.Connection := aConnection; 
MySP.ProcedureName := 'dbo.UpdateErrors'; 
MySP.Parameters.ParamByName('@Error_Number').value := -1; 
MySP.Parameters.ParamByName('@NewError_Name').value := 'errorM1'; 
MySP.Parameters.Refresh; 

MySP.ExecProc; 

Параметр @Error_Number является частью хранимой процедуры UpdateErrors с помощью SQL Server Management Studio, я добавляю надрез изображение для подтверждение

enter image description here

, но я не могу понять, почему я получаю сообщение об ошибке

+4

Try для вызова параметров 'MySP.Parameters.Refresh' * before * вы задаете параметры. Или создайте параметры тезисов в вашем 'TADOStoredProc', не вызывая' Refresh'. например 'MySP.Parameters.CreateParameter ('@ Error_Number' ...)' (или создать их в режиме разработки) – kobik

+0

Kobik, вы должны ответить на этот вопрос. –

+1

Я не уверен в этом '@' в своих именах. – TLama

ответ

2

Просто используйте TADOCommand

MyCommand.Connection := aConnection; 
    MyCommand.CommandText := 'EXEC dbo.UpdateErrors :Er, :Na'; //you can call the params what you want 
    MyCommand.Parameters[0].value := -1; //Or you can do ParamByNname and use Er and Na (or whatever you called your params) instead of indices 
    MyCommand.Parameters[1].value := 'errorM1'; 
    MyCommand.Execute; 

Если вы хотите исправить код

ли

ErParam := MySP.Parameter.Add; 
ErParam.Name := '@Error_Number'; 
ErParam.DataType := ftInteger; //put your correct type here 
ErParam.Direction := pdInput; //set your direction for the param 

и т.д. Намного больше работы ... сделать первый путь с ADOCommands

+0

что это тип ErParam? ErParam: TCollection не работал для меня. – user1769184

+0

с использованием команды TADO Задача решена – user1769184

+1

'ErParam' имеет тип' TParameter', если вы решите пойти по пути объявления параметров. –

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