도와주세요. 아래 쿼리가 예상대로 작동하지 않습니다. @ 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
언뜻보기에 이것은 커서가 필요없는 것으로 보입니다. 그것이 의도 된 바를 설명 할 수 있습니까? –
@Martin은 CARDTABLE의 COUNT (SerialNumb)를 의미하며 @count <> 1은 FORMTABLE에 삽입하지만 계속 반복해서 삽입합니다. – jenni
2 개의 테이블에 대한 예제 데이터를 추가했습니다. 이제 해당 데이터를 기반으로 커서를 만들려고합니까? –