SQL Server: 在CREATE FUNCTION中声明变量

3

我希望在 SQL Server 中创建一个 函数

在这个函数中,我需要定义一些 变量,然后在 SELECT 语句中使用它们。

SQL 如下:

CREATE FUNCTION [dbo].[MyFussnction]  
(
    @path [nvarchar](10)
)
RETURNS TABLE

BEGIN
    DECLARE @xx varchar(50);
    SET @xx = 'Windows%';
RETURN 
    SELECT * FROM MyTable WHERE DataPath LIKE @path AND XX LIKE @xx;
END

但是,它无法被创建,出现的错误如下:

Msg 102, Level 15, State 31, Procedure MyFussnction, Line 12 [Batch Start Line 0]
Incorrect syntax near 'BEGIN'.

2
您需要定义返回的表的列。仅针对内联表值函数才能免去此麻烦。 - Gordon Linoff
1
你忘记在BEGIN之前加上'AS',还有@GordonLinoff所说的。 - S3S
2
这里其实不需要变量。你可以将其作为内联函数(通常更高效),并使用 SELECT * FROM MyTable WHERE DataPath LIKE @path AND XX LIKE @path + '%'; - Martin Smith
1个回答

4
您需要定义要返回的表格列,然后可以使用declare进行声明,类似下面这样:

您需要定义要返回的表格列,然后可以使用declare进行声明,类似下面这样:

CREATE FUNCTION [dbo].[MyFussnction]  (  
@path [nvarchar](10)
)
RETURNS @Mytable TABLE 
(
    ID int PRIMARY KEY NOT NULL
    -- define other columns
)
AS
BEGIN
    DECLARE @xx varchar(50);
    SET @xx = 'Windows%';

    Insert into @Mytable
    SELECT Id FROM MyTable WHERE DataPath LIKE @path AND XX LIKE @xx;
  RETURN; 
END

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接