Я добавил ваше определение sppl_ParamTest
к моему серверу Sql 2014 и выполнил следующий код после минимальной конфигурации FDConnection, чтобы указать его на серверную базу данных &. FDQuery является свежим из палитры компонентов с установленным только свойством Connection.
procedure TForm1.FormCreate(Sender: TObject);
begin
FDQuery1.SQL.Text := 'sppl_ParamTest';
FDQuery1.Open;
Caption := FDQuery1.Fields[0].AsString;
end;
Подпись формы отображает 666
, как ожидалось.
Частичное DFM (имя пользователя и пароль опущена):
object FDConnection1: TFDConnection
Params.Strings = (
'Database=MATest'
'Server=MAT410\ss2014'
'DriverID=MSSQL')
LoginPrompt = False
Left = 32
Top = 16
end
object FDQuery1: TFDQuery
Connection = FDConnection1
Left = 104
Top = 16
end
Update Я думаю, что проблема в OP является, скорее всего, возникающий из-за ошибки в реализации TFDCommand и TFDStoredProc. Выполнение
sppl_ParamTest по умолчанию
в Sql Server Management Studio корректно возвращает
Так же открытие FDQuery с sppl_ParamTest default
(или просто sppl_ParamTest
) в качестве своей команды текст.
Однако с CommandText TFDCommand Установим на ту же величину, вызывая Execute
на него производит эту ошибку
не удалось найти хранимую 'MATest.dbo.sspl_ParamTest по умолчанию' Порядок действий
В равной степени, делать
FDStoredProc1.ParamByName('@ID').Value := 'default';
(Unsurprisingly) вызывает ошибку
Не удалось преобразовать вариант типа (String) в тип (Integer)
по призванию FDStoredProc.Open
и до сих пор сопротивлялся моим попыткам установить тип параметра, который будет принимать «по умолчанию» и правильного выполнения зр.
Кроме того, попытки вызвать FDCommand с EmptyParam
в качестве значения входного параметра не могут вернуть значение 666.
Вы можете указать параметры, если включить мета флаг в FetchOptions, это описано в [руководстве] (http://docwiki.embarcadero.com/RADStudio/en/Executing_Stored_Procedures_ (FireDAC)) – whosrdaddy
Большое спасибо, это сработало –