SQL Server:在

时间:2017-06-21 19:16:22

标签: sql sql-server function

我想在function中创建一个SQL Server

在这个函数中,我需要定义一些variables然后在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'.

1 个答案:

答案 0 :(得分:1)

您需要定义要返回的表的列,然后您可以使用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