Msg 111, Level 15, State 1, Line 3
'CREATE FUNCTION' must be the first statement in a query batch.
'CREATE FUNCTION' must be the first statement in a query batch.
When creating the User Defined function, if the CREATE FUNCTION is not the first statement in the query, you will receive this error
There should be no other statements before the CREATION FUNCTION statement that would make it not the first statement in a query batch
Below is the SQL Script that will lead to the error.
Select * from Employee Create FUNCTION [dbo].[Calculate_Age] ( @DOB datetime , @calcDate datetime ) RETURNS int AS BEGIN declare @age int IF (@calcDate < @DOB ) RETURN -1 -- If a DOB is supplied after the comparison date, then return -1 SELECT @age = YEAR(@calcDate) - YEAR(@DOB) + CASE WHEN DATEADD(year,YEAR(@calcDate) - YEAR(@DOB) ,@DOB) > @calcDate THEN -1 ELSE 0 END RETURN @age END
Output:
Msg 111, Level 15, State 1, Line 3
'CREATE FUNCTION' must be the first statement in a query batch.
Msg 111, Level 15, State 1, Line 3
'CREATE FUNCTION' must be the first statement in a query batch.
To avoid this error, CREATE FUNCTION statement must always be the first statement in the Query batch. To fix this, the GO command needs to be added to seperate the SELECT Command from the CREATE FUNCTION. One of the advantages of this is that the GO command lets the SQL Server know that its the end of the batch of T-SQL statements and anything after the GO is a new batch of query.
Select * from Employee Go Create FUNCTION [dbo].[Calculate_Age] ( @DOB datetime , @calcDate datetime ) RETURNS int AS BEGIN declare @age int IF (@calcDate < @DOB ) RETURN -1 -- If a DOB is supplied after the comparison date, then return -1 SELECT @age = YEAR(@calcDate) - YEAR(@DOB) + CASE WHEN DATEADD(year,YEAR(@calcDate) - YEAR(@DOB) ,@DOB) > @calcDate THEN -1 ELSE 0 END RETURN @age END
No comments:
Post a Comment