我用 SQL SERVER 导出 数据库的SQL脚本 到一个文件a.sql  中
然后 想在程序中 动态创建数据库(包含表,视图)qr.SQL.Clear;
qr.SQL.LoadFromFile('C:\My Documents\ab.sql');
qr.ExecSQL;
但是 提示 GO 语句出错
有咱办法
把 a.sql 文件中 GO 语句去掉,这样很明显也是不行的以GO为分割符一句一句 执行 qr.ExecSQL; 
这样当然后行,可是太没人性了1 为什么GO 语句不行
2 有什么便利的解决办法

解决方案 »

  1.   

    qr.Sql.LoadFromFile('C:\My Documents\ab.sql');
    for i:=0 to qr.sql.count -1 do
      if qr.sql.strings[i] = 'GO' then
        qr.sql.strings[i] := '';    //去掉 go
    qr.sql.add('GO'); // 最后加句 GOqr.sql.execsql;  // 注意,数据库结构必须为空,如果已经存在数据表等内容,则无法通过
      

  2.   

    估计只能将GO去掉再执行。而且一次只能执行一条完整的SQL语句。连续多条完整的语句放在sql属性中一次执行出错的可能性太高啦!能高效地完成任务,并能让其他人方便地阅读你的代码即为高手。
      

  3.   

    把SQL脚本放到存储过程中,再执行试试!
      

  4.   

    判断文本每行前两个字母是GO就跳过去不读,因为SQL语法GO只能放在开头
      

  5.   

    没法了,只好
    以GO为分割符一句一句 执行 qr.ExecSQL;