从备忘录运行复杂的SQL脚本(多行)

时间:2013-04-17 08:41:08

标签: sql-server-2008 delphi ado

我在使用ADO和MSSQL服务器时正在执行sql脚本。 在Here下,您将找到多行sql语句的第一个示例,如:

 use master;
 go;
 EXEC sp_detach_db
     @dbname=N'DATABASENAME';
 go;

我将这些行从Tmemo复制到我的TADOQuery.sql.text但由于已经无法识别go语句而失败,并且我的mssql服务器收到了关键字错误。 我可以将整个sript作为一个TQquery运行,还是将我的查询拆分成几个部分,用分号分隔并遍历整个文本?

2 个答案:

答案 0 :(得分:2)

您必须拆分每个语句而不发送go。 SQL-Server不解释GO,这是由SSMS完成的。

答案 1 :(得分:2)

首先,您的代码无效(不是;在GO之后)并且必须是这样的

USE master;
GO
EXEC sp_detach_db
    @dbname=N'DATABASENAME';
GO

实际上GO是MSSMS用来分隔SQL语句的分隔符。

如果你想使用与MSSMS相同的脚本,你必须像MSSMS那样使用它。

  1. 通过分隔符GO
  2. 将脚本拆分为单个部分
  3. 将每个部分发送到数据库