Помогите пожалуйста, имеется куча шаблонного кода когда выполняешь ExecSQLEx, например:
if not DataModule1.UniConnection1.InTransaction then
DataModule1.UniConnection1.StartTransaction;
try
//тут выполняемый запрос
DataModule1.UniConnection1.ExecSQLEx('UPDATE ...','parametr1', parametr1, 'parametr2', parametr2,'parametr3', parametr3 ...);
DataModule1.UniConnection1.Commit;
except on E: Exception do
begin
DataModule1.UniConnection1.Rollback;
end;
end;
Я хотел бы вынести это в отдельную функцию, где нужно лишь указать SQL текст запроса и параметры, но никак не могу сообразить как это правильно сделать. Проблема в том, что входящих параметров может быть разное количество, а их типы могут быть разные. Моё примерно преставление как это должно выглядеть:
...
class function upd<T> (SQL:string; params: array of T): T; static;
...
function TForm1.upd<T> (SQL:string; params: array of T): T;
begin
if not DataModule1.UniConnection1.InTransaction then
DataModule1.UniConnection1.StartTransaction;
try
DataModule1.UniConnection1.ExecSQLEx(SQL, params[i]) //как здесь перечислить в цикле и указать входящие аргументы?
DataModule1.UniConnection1.Commit;
except on E: Exception do
begin
DataModule1.UniConnection1.Rollback;
ShowMessage('Ошибка: '+ E.Message)
end;
end;
end;
Как правильно это сделать?