I have a Query that works in SQL Server as well but when i save it in ado query in delphi it doesn't work and stops with this error :
Incorrect syntax near 'GO'
But the below code is correct and has not any error . i was tested it in sql server . The below code is not Regular because i copy and past it from delphi .
My Query :
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;
The GO keyword is not a SQL Server statement
GO is not a Transact-SQL statement; it is a command recognized by the sqlcmd and osql utilities and SQL Server Management Studio Code editor.
You must remove this statement from your Delphi Code in order to execute your Sql sentence. check this question for an example How to run a database script file from Delphi?
You cannot do multiple statements in a Delphi query.
Put each block before each go in its own query and run them in sequence.  
Then it should work.
Do not put the go statement in the Delphi query, it does go implicitly.
What you are executing is a script where each individual statement is separated with a GOstatement. 
- SSMSknows how to interprete these statements and execute them one at the time.
- ADOdoes not know how to interprete these statements.
You could either
- parse the statement yourself and execute each individual statement with a TADOQuery.
- place each statement in a TADOQueryobject of its own.
From GO(Transact-SQL)
GO is not a Transact-SQL statement; it is a command recognized by the sqlcmd and osql utilities and SQL Server Management Studio Code editor.
SQL Server utilities interpret GO as a signal that they should send the current batch of Transact-SQL statements to an instance of SQL Server. The current batch of statements is composed of all statements entered since the last GO, or since the start of the ad hoc session or script if this is the first GO.
来源:https://stackoverflow.com/questions/7660904/conflict-between-delphi-and-sql-server