5

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

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

这是我的代码:

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

请让我知道解决方案

4

3 回答 3

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 
于 2013-06-05T12:17:20.750 回答
6

语法错误,仅此而已。BEGIN当你有一个“内联表值函数”时你不需要

请参阅CREATE FUNCTION和示例 B

CREATE FUNCTION [dbo].[Sample] (@SampleValue int)
RETURNS TABLE
AS
RETURN
(
 SELECT * FROM View_sls
);
GO
于 2013-06-05T12:38:22.223 回答
3

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

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

  INSERT @T
    <select ...>

  RETURN
END
于 2013-06-05T12:17:02.820 回答