我要执行一大串SQL语句,而且每条语句都很长,用SQL.ADD添加进去十分不方便,请问各位大侠用什么方法处理会简便些。还有执行的结果怎样导出到文本文件中呢?此外还想请教一下怎样才能做到定时执行的效果,因为程序每月10号都要执行一次。

解决方案 »

  1.   

    如果你使用的是sql server,oracle数据库,
    最好使用[作业]来处理定时执行的问题有关作业你可以看相关帮助
      

  2.   

    sql server:
    create job
      

  3.   

    或许用程序,或许用sql服务器进行自动执行
      

  4.   

    procedure TForm1.DbgridToTxt(source: Tobject);
    var
      FileName: TextFile;
      DataSet: TDataSet;
      titlestr,valuestr,tempstr:string;
      counter:integer;
    begin
      if (source is TDBGrid) then
        DataSet := TDBGrid(source).DataSource.DataSet
      else
        DataSet := TDataSet(source);
      if ((DataSet.IsEmpty) or (not DataSet.Active)) then
        Exit
      else
      begin
        DataSet.DisableControls;
        DataSet.First;
        if SaveDialog1.Execute then
        begin
          AssignFile(FileName,SaveDialog1.FileName);
          Rewrite(FileName);
          titlestr := '';
          for counter := 0 to DataSet.FieldCount - 1 do
          begin
            titlestr := titlestr + ' ' + FormatStr(DataSet.Fields[counter].DisplayLabel, DataSet.Fields[counter].DataSize);
          end;
            titlestr := Trim(titlestr);
            Writeln(filename,titlestr);
            while not DataSet.Eof do
            begin
              valuestr := '';
              for counter := 0 to DataSet.FieldCount - 1 do
              begin
                tempstr := DataSet.Fields[counter].Text;
                tempstr := FormatStr(tempstr, DataSet.Fields[counter].DataSize);
                valuestr := valuestr + ' ' + tempstr;
              end;
              valuestr := Trim(valuestr);
              Writeln(filename,valuestr);
              DataSet.Next;
            end;
            CloseFile(FileName);
        end;
        DataSet.EnableControls;
        ShowMessage('保存成功');
      end;
    end;
      

  5.   

    我用的是oracle数据库,请问存储过程怎样写啊?在程序中怎样执行存储过程?谢谢各位了!
      

  6.   

    create proc proc_name
    (
    .......
    )
      

  7.   

    你用ORACLE导出数据会吗?
    如果用程序的话,下面让你参考:
    procedure TfrmDumpOut.btnOkClick(Sender: TObject);
    var
      Eid: String;
      MyStr: TStringList;
      sSQL: String;
    begin
      if Trim(cbEid.Text)='' then exit;
      Eid:=Copy(cbEid.Text,1,Pos(' ',cbEid.Text)-1);
      MyStr:=TStringList.Create;
      Screen.Cursor:=crHourGlass;
      try
        //预算单位
        MyStr.Add('[ysdw]');    sSQL:='select eid,name,totalname,class,isleaf,code,did from enterprise where [year]='+IntToStr(gYear)+' and eid like '''+Eid+'%''';
        FQuery.Close;
        FQuery.SQL.Text:=sSQL;
        FQuery.Open;
        FQuery.First;
        while not FQuery.Eof do
          begin
            MyStr.Add(FQuery.FieldByName('eid').AsString+'|'+FQuery.FieldByName('name').AsString+'|'+FQuery.FieldByName('totalname').AsString
            +'|'+FQuery.FieldByName('class').AsString+'|'+FQuery.FieldByName('isleaf').AsString+'|'+FQuery.FieldByName('code').AsString+'|'+FQuery.FieldByName('did').AsString+'|');
            FQuery.Next;
          end;
         。
         。
         。
         。
        sd.FileName:=Eid+' '+GetEnterprise(Eid);
        if sd.Execute then
          begin
            MyStr.SaveToFile(GetSysFileName);
            Encrypt(sd.FileName+'.f07');
            DeleteFile(GetSysFileName);
          end;
      finally
        MyStr.Free;
      end;
      Screen.Cursor:=crDefault;
      Application.MessageBox('导出数据完成!','提示',MB_OK+MB_ICONINFORMATION);
    end;
      

  8.   

    请问在同一个存储过程中能不能同时执行几条SQL语句?如果可以该怎样写?
      

  9.   

    在一个存储过程可以同时多条sql语句,只要你喜欢执行多长的语句都行。
    你可以写好一个存储过程,然后再做一个作业,这个作业就是执行这个存储过程的,最后再调度这个作业的执行时间。你想要他什么时候执行都行,只要开机。
      

  10.   

    我还想问存储过程是写在哪里的?是在delphi的程序行里写,还是在数据库里写?我用的是delphi6 + oracle,能不能举个写存储过程的例子给我?
      

  11.   

    我还想问存储过程是写在哪里的?是在delphi的程序行里写,还是在数据库里写?我用的是delphi6 + oracle,能不能举个写存储过程的例子给我?
      

  12.   

    Ontime事件可以定时执行啊