저장 프로 시저에 통합하려고하는 CTE가 다소 복잡합니다. SQL Server Management Studio에서 곧바로 작동 할 때 작동합니다. 저장 프로 시저에 내 CTE를 통합하려고 할 때여러 CTE를 사용하는 구문 오류
Msg 102, Level 15, State 1, Procedure spMyCrazyProc, Line 56
Incorrect syntax near ','.
내가 구문을 잘못 무슨 짓을 : 내 저장 프로 시저를 만들려고 할 때 오류가 발생합니다?
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[spMyCrazyProc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[spMyCrazyProc]
GO
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE dbo.spMyCrazyProc
@CompanyId Int,
@EmployeeIds varchar(MAX)
AS
;with SelectedEmployees as (
select * from vwEmployee e
where e.CompanyId = @CompanyId
and (@EmployeeIds is null or @EmployeeIds='' or exists(select ce.SelectedEmployeeId from #myTmpTable ce where ce.SelectedEmployeeId=e.EmployeeId)
), MyStuffA as (
select * from SelectedEmployees
)
select * from MyStuffA
GO
(제쳐두고, 코드가 저장 프로 시저 본문 외부에서 작동하는 방식은 없습니다. 또한 동일한 오류가 발생합니다. 비슷한 오류 (그냥 더 이상 쉼표를 가리키고) 단지 하나의 CTE가 있다면. 난 당신이 텍스트를 오른쪽으로 화면에서 강제로 때문에 구문 오류를 놓친 용의자. 나는 그 방법을 내 왼쪽 들여 쓰기와 캐리지 리턴은 친구입니다. 화면에서 스크롤하여 화면을 스크롤하도록 강요하는 의식의 흐름은 누구에게 도움이되지 않습니다. –
또한 300 개 이상의 행이 있습니까? 정말? 저는 꽤 복잡한 쿼리를 다루었습니다. 나는 당신보다 훨씬 더 자유로운 캐리지 리턴을 가지고 있습니다. 마지막으로 100 줄 넘는 T-SQL을 다룰 때 기억하지 못합니다. –
그래 ... 나는 그 길이만큼 좋아하지 않았다. 우리의 SSRS 구현은 모든 로직을 일반적인 코드가 아닌 SQL로 가져와야했습니다. 많은 노동 조합, 사건, 심지어는 교차 신청도 있습니다. – REW