I want to define a scaler function which in that I’m going to return the result into a variable but I do not know how to do this.
CREATE FUNCTION dbo.Funname ( @param int )
RETURNS INT
AS
declare @returnvar int
select @returnvar = select colname from tablename where someconditions = something
return(@returnvar)
I want to make a function something like the top. I mean the result of the select statement which is:
select colname from tablename where someconditions = something
Is only a single cell and we are sure about it. I want to store it into a variable and return it from the function. How can I implement this thing?
I should probably mention that scalar UDFs do come with a considerable health warning and can cause performance issues depending upon how you use them.
Here’s an example though.
In the above example I didn’t use a variable as it is redundant. The version with variable is
For both of the above you would need to be sure the Query returned at most one row to avoid an error at runtime. For example
select dbo.Funname(-1)Returns -32768select dbo.Funname(0)Returns error “Subquery returned more than 1 value.”An alternative syntax would be
This would no longer raise the error if the subquery returned more than one value but you would just end up with an arbitrary result with no warning – which is worse.
Following Comments I think this is what you need