반응형
이름을 가진 커서가 이미 존재하는 이유는 무엇입니까?
다음 트리거가 있습니다.
CREATE TRIGGER CHECKINGMAXQTYDAYSVACANCY
ON TDINCI
AFTER INSERT
AS
DECLARE
@incidentCode int,
@dateStart datetime,
@dateEnd datetime,
@daysAccumulated int,
@maxDaysAvailable int
set @daysAccumulated = 0;
select @incidentCode = CO_INCI from inserted;
select @maxDaysAvailable = IN_DIAS_GANA from TCINCI
where CO_INCI = @incidentCode;
declare detailsCursor CURSOR FOR
select FE_INIC, FE_FINA from TDINCI
where CO_INCI = @incidentCode;
open detailsCursor;
if CURSOR_STATUS('variable', 'detailsCursor') >= 0
begin
fetch next from detailsCursor
into @dateStart, @dateEnd;
while @@FETCH_STATUS = 0
begin
set @daysAccumulated = @daysAccumulated + (DATEDIFF(DAY, @dateStart, @dateEnd) + 1);
fetch next from detailsCursor
into @dateStart, @dateEnd;
end
close detailsCursor;
deallocate detailsCursor;
end
IF(@maxDaysAvailable > @daysAccumulated)
BEGIN
RAISERROR ('No se pueden ingresar mas dias de los programados en la cabecera de incidencias.', 16, 1);
ROLLBACK TRANSACTION;
RETURN
END
GO
표에 삽입을 수행할 때 TDINCI
INSERT INTO TDINCI
VALUES (1, '20150101', '20150115', '2015-2015')
오류가 발생합니다.
이름이 'detailsCursor'인 커서가 이미 있습니다.
나는 열어요
open detailsCursor;
커서를 닫습니다.
close detailsCursor;
deallocate detailsCursor;
커서의 범위에 제가 관리하지 않는 무언가가 있는 것이 아닐까요?
이 절차를 호출할 때마다 정의되는 전역 커서를 사용하고 있으며 동일한 오류가 표시됩니다.
로컬 커서를 정의합니다.그냥 키워드를 넣어주세요.LOCAL
끝나고CURSOR
:
declare detailsCursor CURSOR LOCAL FOR
...
언급URL : https://stackoverflow.com/questions/28786096/why-do-i-get-a-cursor-with-the-name-already-exists
반응형
'sourcecode' 카테고리의 다른 글
UI 세그먼트 컨트롤을 사용하여 보기를 전환하는 방법은 무엇입니까? (0) | 2023.08.01 |
---|---|
Angular2 재료 대화상자 자체 닫기 (0) | 2023.08.01 |
PL/SQL에서 날짜 범위에 걸쳐 반복하는 방법 (0) | 2023.07.27 |
">"(표시보다 큼) CSS 선택기는 무엇을 의미합니까? (0) | 2023.07.27 |
PHP에서 "비등한" 연산자 <>와 !=의 차이 (0) | 2023.07.27 |