그냥 간단한 질문, 다음 쿼리를 단순화하는 방법 또한 루프 대신 .. 아무것도 바꿀 수 있습니까? 감사.while 루프를 제거하는 방법?
DECLARE @CNT INT=0
,@CNTER INT=1
,@REF VARCHAR(20)
,@TABLENAME VARCHAR(20)
,@SQL VARCHAR(MAX)
DECLARE @TABLE TABLE(ID INT,TABLENAME VARCHAR(20),DES VARCHAR(20))
INSERT @TABLE
SELECT 1,'TB1','MASTER'
UNION
SELECT 2,'TB2','MASTER'
UNION
SELECT 3,'TB3','SLAVE'
UNION
SELECT 4,'TB4','SLAVE'
SELECT @CNT =COUNT(*) FROM @TABLE
WHILE @CNTER<[email protected]
BEGIN
SET @REF= (SELECT DES FROM @TABLE WHERE [email protected])
SET @TABLENAME=(SELECT TABLENAME FROM @TABLE WHERE [email protected])
IF @REF='MASTER'
BEGIN
SET @SQL='SELECT * FROM '''[email protected]+''' A
INNER JOIN REPS C ON A.NAME=C.NAME'
END
IF @REF='SLAVE'
BEGIN
SET @SQL='SELECT * FROM '''[email protected]+''' A
INNER JOIN REPS C ON A.NAME=C.NAME'
END
SELECT @[email protected]+1
END
누구든지이 문제를 분류 할 수 있습니까?
을 무슨 'IF의 사용 당신의 코드에서 '조건'. 두 조건 모두에있는 select 문은 동일하게 보입니다. 아래 코드를 참조하십시오. –
도 쿼리가 출력을 생성하지 않으면 @sql 변수를 설정하지만 사용하지 마십시오. 그 동안 쿼리 문 목록을 생성 할 수도 있습니다. 테이블을 채우고 (많은 레코드를 한 번에 삽입 할 수 있으므로 UNION을 사용할 필요가 없음) 정기적 인 선택을하십시오. 그러나 우리는 당신이 ** @ SQL ** varible을 어떻게 소비하는지 모르므로 나는 단지 추측을 할 수 있습니다 – jean