1

我正在 SQL Server 2000 中创建一个 SQL Server 函数。我的语法大约是这样的:

ALTER FUNCTION dbo.test()
RETURNS TABLE
AS
RETURN 
(
  DECLARE @A VARCHAR(100)
  DECLARE @B VARCHAR(100)
  SELECT @A='abc', @B='bca'
  SELECT A=@A, B=@B  
)

我正在尝试声明一个变量并将其选择为返回值,但我收到以下错误消息:

Msg 156, Level 15, State 1, Procedure test, Line 6
Incorrect syntax near the keyword 'DECLARE'.
Msg 170, Level 15, State 1, Procedure test, Line 10
Line 10: Incorrect syntax near ')'.

似乎它不会接受变量声明。有什么问题?提前致谢。

4

1 回答 1

3

您的语法适用于内联表函数。使用多个语句,您需要一个多语句表函数。

CREATE FUNCTION dbo.test()
RETURNS @returntable TABLE 
(
    A VARCHAR(100),
    B VARCHAR(100)
)
AS
BEGIN
    DECLARE @A VARCHAR(100)
    DECLARE @B VARCHAR(100)
    SELECT @A='abc', @B='bca'
    INSERT INTO @returntable 
    VALUES(@A, @B)
    RETURN 
END

创建函数

更新:
如果你想要一个内联表函数必须只有一个选择语句。

CREATE FUNCTION dbo.test2()
RETURNS TABLE AS RETURN
(
    SELECT 'abc' AS A, 'bca' AS B
)
于 2012-04-20T11:00:39.973 回答