冲突

2011-10-05 129 views
1

我有一个在SQL Server的工作原理以及但是当我在ADO查询其保存在Delphi中这是行不通的,并与此错误停止查询:冲突

Incorrect syntax near 'GO' 

但下面的代码是正确的,没有任何错误。我在sql server中测试过它。 下面的代码是不正规的,因为我从delphi复制和过去。

我的查询:

create function GetTedad(@pfcode INT, @pdcode INT) returns int 
as begin declare @Tedad int; 
select @Tedad= sum(t2.tedade_avalie) from Tbl_avalie_salon t2 where t2.FCode = @pfcode and t2.DCode = @pdcode 
return (@Tedad); end; 
GO 
create function getSumBSen2(@pfcode INT, @pdcode INT, @pSen INT) returns int 
as begin declare @r int; 
select @r= sum(t2.t_shab + t2.t_rooz) from tbl_talafat_dan t2 where t2.FCode = @pfcode and t2.DCode = @pdcode and t2.sen <= @pSen; 
return (@r); end; 
GO 
select t1.sen, sum(t1.d_rooz) as d1, sum(t1.d_shab) as d2, sum(t1.d_rooz + t1.d_shab) as d_sum, 
Round((sum((1000*(t1.d_rooz+t1.d_shab)+0.01)/((dbo.GetTedad(81, 1))-(dbo.getSumBSen2(81, 1, t1.sen))))),1) as Saraneh 
from tbl_talafat_dan t1 where t1.FCode =81 and t1.DCode = 1 group by t1.sen; 
+1

尝试搜索和替换所有行只与一个分号走行。我有预感这可能会奏效,但从来没有花时间来正确地测试它。 –

+0

@CraigYoung - 那不行。 'create function'必须在它自己的批处理中。 –

+0

@MikaelEriksson谢谢,我不知道分号是否会被当作批分隔符处理......我猜不是。 :(但是,我发现了一个值得考虑的另一个选项的链接:http://weblogs.asp.net/jgalloway/archive/2006/11/07/Handling-_2200_GO_2200_-Separators-in-SQL-Scripts-_2D00_-在-易way.aspx –

回答

1

你不能做一个Delphi查询多个语句。
将每个go之前的每个块放入其自己的查询中,并按顺序运行它们。

然后它应该工作。
不要把go语句放在Delphi查询中,它会隐式地执行go

+0

谢谢你,但我不知道我应该为此做--->把每块在其自己的查询各走各的,并顺序运行它们。 – user980115

+0

@ user980115创建3个查询与和运行它们 – Johan

+0

它的一个查询不能是3.我需要一起运行功能 – user980115

1

你正在执行的是一个脚本,每个单独的语句用GO语句分开。

  • SSMS知道如何解释这些语句并在当时执行它们。
  • ADO不知道如何解释这些陈述。

你既可以

  • 自己分析语句,并用TADOQuery执行每个单独的语句。
  • 将每个语句放在它自己的TADOQuery对象中。

GO(Transact-SQL)

GO不是Transact-SQL语句;它是由 sqlcmd和osql实用程序和SQL Server Management Studio代码 编辑器识别的命令。

SQL Server实用程序将GO解释为应将当前批次的Transact-SQL语句发送到SQL 服务器的实例的信号 。当前的一批语句由自上次GO或自特设会话开始以来输入的所有语句 组成,或者如果这是第一个GO,则由 脚本输入。

5

GO关键字不是SQL Server语句

GO不是Transact-SQL语句;它是由 sqlcmd和osql实用程序和SQL Server Management Studio代码 编辑器识别的命令。

您必须从您的Delphi代码中删除此语句才能执行您的SQL语句。检查这个问题的一个例子How to run a database script file from Delphi?

+0

所以我如何运行我的功能,,,,如果我不使用GO代码根本不起作用您的意思是我不能使用2个功能在一个查询中? – user980115

+0

取决于您正在使用的组件。查看发布在问题链接中的示例。 – RRUZ