现将一存储过程的内容保存在txt文件中,想用程序将其导入到另一数据库中。当用
Query生成时,只能将其内容全部读成一行后才能生成。这样生成后的存储过程可读性太差了。
请问如何生成存储过程使其格式同txt中的一样?

解决方案 »

  1.   

    不用的,Query 是个数组,不是只能一行,只要你遇到go 你再执行就行了,这是一个执行SQL脚本的例子:
    Procedure TFrm_main.suiButton2Click(Sender: TObject);
    Var
      i: integer;
      ss: TstringList;
    Begin
      If Edit1.Text <> '' Then
      Begin
        Try
          Screen.Cursor := crHourGlass;
          ss := TStringList.Create;
          ss.LoadFromFile(Edit1.Text);
          With ADOQuery1 Do
          Begin
            close;
            SQL.Clear;
            SQL.Add(' use ' + dbname);
            ExecSQL;
            close;
            SQL.Clear;
            For i := 0 To ss.Count - 1 Do
            Begin
              If lowercase(ss[i]) = 'go' Then
              Begin
                ExecSQL;
                close;
                sql.clear;
              End
              Else
                SQL.Add(ss[i]);
            End;
          End;
          Screen.Cursor := crDefault;
          Messagebox(handle, '数据库升级成功!', '提示:', MB_OK + MB_ICONINFORMATION);
        Except
          Begin
            Screen.Cursor := crDefault;
            Messagebox(handle, '数据库升级失败(可能是您己经升级过或数据库遇到未知错误)!', '提示:', MB_OK + MB_ICONERROR);
            Raise;
          End;
        End;
      End;
    End;
      

  2.   

    frmdata.Query1.Close;
    frmdata.Query1.SQL.LoadFromFile('c:\sbcz.txt');
    frmdata.Query1.ExecSQL;