Question

I am just trying to create a function that returns a select statement, but it gives the error:

A RETURN statement with a return value cannot be used in this context.

This is my code:

CREATE FUNCTION [dbo].[Sample] (@SampleValue int)
RETURNS TABLE
AS
BEGIN
RETURN(
 SELECT * FROM View_sls
)

Please let me know the solution

Was it helpful?

Solution 2

Wrong syntax, that's all. You don't need BEGIN when you have an "inline table-valued function"

See CREATE FUNCTION and example B

CREATE FUNCTION [dbo].[Sample] (@SampleValue int)
RETURNS TABLE
AS
RETURN
(
 SELECT * FROM View_sls
);
GO

OTHER TIPS

Two things:

  • you need to define the structure of the table you want to return
  • you need to add data into that table

Then you can call RETURN; to return that table's data to the caller.

So you need something like this:

CREATE FUNCTION [dbo].[Sample] (@SampleValue int)
RETURNS @returnTable TABLE 
                     (ContactID int PRIMARY KEY NOT NULL, 
                      FirstName nvarchar(50) NULL, 
                      LastName nvarchar(50) NULL, 
                      JobTitle nvarchar(50) NULL, 
                      ContactType nvarchar(50) NULL)
AS 
BEGIN
    INSERT INTO @returnTable
        SELECT ContactID, FirstName, LastName, JobTitle, ContactType
        FROM dbo.View_sls

    RETURN;
END 

You need to describe the returned table, populate it, then RETURN:

CREATE FUNCTION [dbo].[Sample] (@SampleValue int)
RETURNS @RESULTS TABLE
(
  ID int, <other fields>
)
AS BEGIN

  INSERT @T
    <select ...>

  RETURN
END
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top