2011-09-01 6 views
1

도와주세요. 아래 쿼리가 예상대로 작동하지 않습니다. @ count = 1 일 때 삽입을 중지 할 것으로 예상되지만 멈추지는 않습니다. 문제가 뭔지 알 수 없으니 제발 도와주세요. 원하는 결과이어야반복 커서가 예상대로 작동하지 않습니다.

DECLARE @CardTable TABLE 
(
Id INT PRIMARY KEY, 
Serialnumb INT, 
Name VARCHAR(50) 
) 

INSERT INTO @CardTable 
SELECT 1,400,'Charey' UNION ALL 
SELECT 2,400,'Mike' UNION ALL 
SELECT 3,400,'James' UNION ALL 
SELECT 4,401,'Vina' UNION ALL 
SELECT 5,400,'Gloria' UNION ALL 
SELECT 6,401,'Faith' UNION ALL 
SELECT 7,401,'Sarah' UNION ALL 
SELECT 8,402,'Joy' UNION ALL 
SELECT 9,402,'Rita' 

DECLARE @FormTable TABLE 
(
Serialnumb INT, 
[GROUP] CHAR(1), 
CLASS VARCHAR(50) 
) 

INSERT INTO @FormTable 
SELECT 400,'A','Science' UNION ALL 
SELECT 401,'B','Social science' UNION ALL 
SELECT 402,'C','philosophy' UNION ALL 
SELECT 403,'D','Engineering' 

CardTable :

create procedure mypro as declare @count int declare aa cursor for select SerialNumb from FORMTABLE open aa declare @SerialNumb varchar(11) fetch next from aa into @SerialNumb while(@@FETCH_STATUS<>-1) begin if(@@FETCH_STATUS <>-2) select @count= COUNT(SerialNumb) from CARDTABLE where [email protected] while (@count<>1) begin ---- variables declaration declare @name declare @location declare @status select @name = name, @location = location, @status=status from FORMTABLE where SerialNumb = @SerialNumb insert into FORMTABLE values(@name, @location, @status) set @count = @count-1 end fetch next from aa into @SerialNumb end close aa deallocate aa 

아래 샘플 데이터를 참조

@FormTable

Serialno Group  Class 
400  A  Science 
401  B  Social science 
402  C  philosophy 
403  D  Engineering 
400  A  Science 
400  A  Science 
400  A  Science 
401  B  Social science 
401  B  Social science 
402  C  philosophy 
+1

언뜻보기에 이것은 커서가 필요없는 것으로 보입니다. 그것이 의도 된 바를 설명 할 수 있습니까? –

+0

@Martin은 CARDTABLE의 COUNT (SerialNumb)를 의미하며 @count <> 1은 FORMTABLE에 삽입하지만 계속 반복해서 삽입합니다. – jenni

+1

2 개의 테이블에 대한 예제 데이터를 추가했습니다. 이제 해당 데이터를 기반으로 커서를 만들려고합니까? –

답변

0

마틴과 동의합니다. 커서가 전혀 필요하지 않은 것 같습니다. 간단한 조인으로 충분할 것입니다.

왜 양식 테이블에 데이터를 다시 저장 하시겠습니까?

+0

두 테이블의 각 serialnumb에 대한 수를 모두 같게하고 싶습니다. @Nil – jenni

+0

Martin이 제공 한 쿼리를 사용해도 되겠습니까? . –

관련 문제