업데이트 커서를 사용하여 ASE (버전 15.7 ESD 15.2)의 이상한 동작에 직면했습니다.
마지막으로 나는 근본 원인을 찾았지만 유용 할 수 있고 여기 누군가가 이미 그것을 마주 쳤기 때문에 여기에 게시하는 것에 대해 thougth합니다. 업데이트 커서가 충돌하는 Sybase ASE
DECLARE c_contactrule
CURSOR FOR
SELECT a.id
FROM FTContactRule a, Client b, ClientContact c
WHERE /* join conditions */
AND a.client_id IN (bla bla bla)
AND a.message_subtype_id (bla bla bla)
AND /* and so on */
for update of a.preferred_medium_id
go
(나는이 게시물에 대한 약간에게 쿼리를 요약이 더 많은 읽을 수하기)
이하 물론, 내가 읽어
나는이 간단한 "업데이트"커서를 썼다 끝까지 커서 값.open c_contactrule
fetch c_contactrule into @rule_to_update
while @@sqlstatus = 0
begin
/* do something */
end
close c_contactrule
deallocate c_contactrule
go
나는 당신이 어딘가에 현재 update preferred_medium_id where current of
, 매우 구체적인 방식이 쿼리 충돌이 있음을 짐작 생각한다 던진 메시지는 "ASE는이 과정을 termintaed"실제로, 그는 나의 세션을 죽입니다 !
조사한 결과 나쁜 코드 줄이 처음으로 fetch into
문이었습니다.