我的数据表这样:
字段1  字段2 字段3
1      2    4
2      5    6
2      4    5我想用字段1和字段2通过一系列复杂运算得到字段3的值,比如通过一个自定义的函数:
字段2:=abcd(字段1,字段2);
我用update语句和怎么得到这个值,并批量写到数据库中?也可以使用Parameters参数。简单地说,就是在SQL语句中使用自定义的函数,怎么写?

解决方案 »

  1.   

    function  TDBOperator.GetInArea(FCardInfo: TCardInfo): integer;
    var
      sqlstr: string;
      isInArea: integer;
    begin
      Result := -1;
      with dm.MyQuery do
      begin
          close;
          sqlstr := 'select  dbo.fn_AreaIsUsernoInTSPCard(:CardSN,:CardPassword) as Reval ';
          try
            sql.Text := sqlstr;
            parameters.ParamByName('CardSN').Value := FCardInfo.UserId;
            parameters.ParamByName('CardPassword').Value := FCardInfo.CardPassword;
            open;
            if not eof then
            begin
              isInArea := strtointdef(FieldByName('Reval').AsString,-1);
              Result := isInArea;
            end;
          finally
            close;
          end;
      end;
    end;GetInArea 就是一个 SQL Server中的自定义函数
      

  2.   

    是在SQL Server中写函数还是在Delphi中写函数?
      

  3.   

    SQL使用自定义的函数,就像使用sum,avg,max...之类的一样使用,直接使用函数名.
    只不过是你要先在数据库中建立此函数才行如:
    Create Function kaikai(@a int,@b int) 
    returns int 
    as 
    begin
      Declare @kk int 
          SET @kk=@a+@b+100
      Return(@kk)
    endupdate tb set 字段3=kaikai(字段1,字段2)
    kaikai就是你建立的函数名称,上面的update语句调用结果就是实现更新 字段3值=字段1+字段2+100至于更复杂的算法函数,建议翻书或者baidu,google去吧