TSQL错误:具有返回值的RETURN语句不能在此上下文中使用

时间:2013-06-05 12:09:43

标签: sql tsql sql-server-2005 sql-function

我只是想创建一个返回select语句的函数,但它会给出错误:

  

带有返回值的RETURN语句不能在此上下文中使用。

这是我的代码:

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

请让我知道解决方案

3 个答案:

答案 0 :(得分:10)

两件事:

  • 您需要定义要返回的表的结构
  • 您需要将数据添加到该表中

然后您可以调用RETURN;将该表的数据返回给调用者。

所以你需要这样的东西:

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 

答案 1 :(得分:6)

语法错误,就是这样。当您具有“内联表值函数”

时,您不需要BEGIN

请参阅CREATE FUNCTION和示例B

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

答案 2 :(得分:3)

您需要描述返回的表格,填充它,然后RETURN

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

  INSERT @T
    <select ...>

  RETURN
END