我正在尝试在 SQL Server 中创建一个表值函数。我的问题是我找不到正确的 SQL 语法。我不断收到错误。我不知道是否可以execute()
在表值函数中使用方法。我尝试过声明和设置变量,并在普通的 sql 查询中使用 execute 方法,它可以工作。
我的 SQL:
CREATE FUNCTION SortRoutePartByDay
(
@date datetime
)
RETURNS TABLE
AS
Begin
declare @cmdtext varchar(max)
declare @Daynameofweek varchar(10)
set @Daynameofweek = datename(weekday, @date)
set @cmdtext = 'select * from RoutePartPart where ' +@Daynameofweek+' =1';
RETURN
(
execute(@cmdtext)
)
GO
到目前为止,我的错误是:
消息 156,级别 15,状态 1,过程 SortRoutePartByDay,第 21 行
关键字“执行”附近的语法不正确。
消息 102,级别 15,状态 1,过程 SortRoutePartByDay,第 23 行
')' 附近的语法不正确。
RoutePartPart DDL:
CREATE TABLE [dbo].[RoutePartPart](
[RouteID] [int] NOT NULL,
[RoutePartNo] [smallint] NOT NULL,
[RoutePartPartNo] [smallint] NOT NULL,
[PickupAreaGrpID] [int] NULL,
[DeliveryAreaGrpID] [int] NULL,
[Monday] [bit] NULL,
[Tuesday] [bit] NULL,
[Wednesday] [bit] NULL,
[Thursday] [bit] NULL,
[Friday] [bit] NULL,
[Saturday] [bit] NULL,
[Sunday] [bit] NULL,
[Pickup] [bit] NULL,
[Delivery] [bit] NULL,
[Types] [varchar](10) NULL
) ON [PRIMARY]