방금 where 절을 잊어 버린 소프트웨어 중 하나에서 버그를 발견했습니다. 코드가 성공적으로 테스트를 통해 갔다select에서 변수 할당이 여러 값을 반환하면 오류를 발생시킬 수 있습니까?
declare @foo bigint
declare @bar bigint
select @foo = foo, @bar=bar from tbFooBar
where (....a long list of condition goes there)
(... and an extra condition should have went there but I forgot it)
불행하게도, 내가 잊고 where 절은 매우 특정 코너의 경우에 유용과 : 코드는 그런 일이었다.
결국 쿼리는 하나가 아닌 두 개의 값을 반환하고 결과 버그는 추적하기 어려운 악몽이었습니다 (재현하기가 매우 어려웠으므로이 특정 저장 프로 시저가 우리가 발견 한 문제)
@ foo = foo가 여러 행 중에서 첫 번째 값을 자동으로 지정하는 대신 예외를 발생시킨 경우 디버깅이 훨씬 쉬워졌습니다.
왜 이렇게됩니까? 나는 실수를 제기하지 않고 실제로 그것을하고 싶어하는 상황을 생각할 수 없다. (이유를 들어 '별개'와 '정상'을 염두에 두라.)
이 상황이 발생하면 SQL Server 2008에서 오류가 발생합니까?
오라클에만 적용되는 plsql에 태그를 지정하는 이유는 무엇입니까? 당신은 여기에 tsql을 사용할 수 있습니다 –
당신은 물론입니다, 그냥 태그를 업데이트했습니다. 알았어 고마워! – Brann