衝突

2011-10-05 135 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