怎么在修改更新删除sql表数据时,自动记录当前批变动数据相应的操作员字段

如何在修改更新删除sql表数据时,自动记录当前批变动数据相应的操作员字段
RT,因为比较懒让dbgrid显示的数据直接批处理然后提交,而sql表那里我想实现哪个用户修改的就变更成该用户名字('维护人')。之前想用触发器来

实现,因为批处理不是qry.open无法fieldbyname……
CREATE TRIGGER [TRIGGER sales] ON [dbo].[Sales] 
FOR INSERT, UPDATE, DELETE 
AS
var @saleser char(10) 
set @saleser='张三' //我想知道这样定义变量究竟是生效了没?
begin
SET NOCOUNT on
update Sales set 维护人=@saleser where 生产订单号 in(select 生产订单号 from inserted)
SET NOCOUNT off
end
但是delphi那里又不知道如何赋值给sql变量……于是寻找方法的时候发现了创建存储过程应该可以实现这个功能
procedure TForm1.Button1Click(Sender: TObject);
begin
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from sales'); //查询到dbgrid
open;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
with ADOStoredProc1 do
begin
close;
ProcedureName:='Updata_sales_1;1'; //想向@saleser 进行赋值,轰出错Parameters'@维护人'not find
Parameters.Refresh;
Parameters.ParamByName('@维护人').Value:=trim(Edit1.Text);
execproc;
end;
adoquery1.UpdateBatch(arAll);//放在with前面会提示sql语句最多只能镶嵌32层;
end;
究竟哪里出错了求各位大大指点

------解决方案--------------------
SQL code
CREATE procedure [Updata_sales]
declare @PrdId char(14),
declare @saleser char(10)
AS
update Sales set 维护人=@saleser where 生产订单号=@PrdId