SQL Server에서 테이블 반환 함수를 만들려고합니다. 내 문제는 내가 SQL에 대한 올바른 구문을 찾을 수 없다는 것입니다. 나는 오류가 계속 발생합니다. 테이블 반환 함수에서 execute()
메서드를 사용할 수 있는지 여부는 알 수 없습니다. 선언하고 변수를 설정하고 또한 oridinary sql 쿼리에서 execute 메서드를 사용하여 시도하고 작동합니다.테이블 반환 함수에서 Execute() 메서드 사용 SQL Server
내 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 ' [email protected]+' =1';
RETURN
(
execute(@cmdtext)
)
GO
내 오류가 지금까지입니다 :
키워드 근처 21
의 구문이 잘못되었습니다 '실행'메시지 156, 수준 15, 상태 1, 프로 시저 SortRoutePartByDay, 라인 .
메시지 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]
한 수정,하지만 어쩌면 무엇이 잘못되었는지 clarrify하려고합니다. 다중/단일 명령문 테이블 함수의 차이점은 무엇입니까? 함수 내에서 부작용 연산자 'INSERT EXEC'를 잘못 사용했습니다. –
@Daynameofweek 매개 변수는 테이블의 열입니다. 이 방법은 nvarchar 값 "목요일"을 int 1과 비교합니다. 값 1 인 모든 행을 가져와야하기 때문에 요일은 열이어야합니다. – Lahib
@Lahib, OK. 테이블의 DDL을 제공 할 수 있습니까? – Devart