Я думаю, что вы хотите вызвать ADOStoredProc1.Parameters.Refresh
, а не ADOStoredProc1.Refresh
.
Кроме того, вы должны установить Active в True только в том случае, если хранимая процедура SQL Server возвращает набор данных - т.е. результат оператора SELECT.,Установка Active в True аналогична вызову Open.
Если хранимая процедура возвращает только код результата (RETURN n ), используйте ExecProc.
Ни в коем случаеЕсли вы используете ADOStoredProc1.Active := True;
и ADOStoredProc1.ExecProc;
В итоге, вы, вероятно, хотите что-то вроде
procedure TForm1.btnDeleteClick(Sender: TObject);
begin
ADOStoredProc1.ProcedureName := 'sp_Delete_Clen';
ADOStoredProc1.Parameters.Refresh; // gets the parameter list from SQL Server
ADOStoredProc1.Parameters.ParamByName('@clenID').Value := edtID.Text;
ADOStoredProc1.ExecProc;
end;