좋아, 내가 이전에 가진 문제와 관련된 질문이 있습니다. 문제를 해결하는 방법을 알고 있지만 오류를 재현하는 데 문제가 있습니다.Sybase select variable logic
다른 레코드를 기반으로 레코드를 만드는 일련의 절차가 있습니다. 레코드는 link_id
의 방법으로 기본 레코드에 연결됩니다. 이 link_id
을 잡고하는 과정에서 쿼리는 활동에 대한 테이블의 여러 행이 지금
select @p_link_id = id --of the parent
from table
where thingy_id = (blah)
입니다. 일부는 취소 될 수 있습니다. 내가 가지고있는 코드는 select 문에서 취소 된 행을 disinclude하지 않으므로 이전에 취소 된 행이있는 경우 해당 ID가 select에 표시됩니다. 취소 된 행을 삭제하면 항상 '열린'레코드 하나가 선택됩니다. (where status != 'C'
추가)
이렇게하면이 문제가 해결됩니다. 그러나 개발 환경에서 문제를 재현 할 수 있어야합니다.
데이터의 전체 힙을 입력하고 열기, 취소 등의 작업을 수행하여 유효하지 않은 ID를 반환하는 SELECT 문을 얻으려고 시도했습니다. 그러나 select를 실행할 때마다 ID가 순서대로 생성되지만이 오류가 발생한 경우 select 문은 변수의 첫 번째 값인 것으로 보이는 항목을 반환합니다.
예를 들면.
ID Status
1 Cancelled
2 Cancelled
3 Cancelled
4 Open
내가 원하는 ID에 대한 선택을한다면, 내가 싶어, 위의 주어진 '4'. 오류에서 결과는 1입니다. 그러나 취소 된 레코드 10 개를 입력해도 선택 항목의 마지막 레코드는 계속 표시됩니다.
오라클에서 변수를 선택하고 둘 이상의 레코드가 반환되면 오류가 발생한다는 것을 알고 있습니다 (필자는 생각합니다). Sybase는 오류없이 여러 값을 변수에 할당 할 수 있습니다.
데이터가 테이블에서 선택되는 방식과 관련이 있습니다. 정렬 순서가없는 ID는 오름차순으로 반환되지 않으며 dboption은 변수로 선택됩니다. 질의 된 첫 번째 또는 마지막 값을 저장하십시오.
편집 : 저장 프로 시저 변경 사항을 롤백하여이 오류를 재현 할 수있는 것처럼 보입니다. 그러나, procs는이 link_id 컬럼 근처의 아무 곳에 나 가지 않습니다. 데이터베이스 아키텍처를 변경하면 인덱스 또는 다른 것이 손상 될 수 있습니까?
[태그 : sybase-asa], [태그 : sybase-ase], [태그 : sybase-iq] 또는 [태그 : sqlanywhere]입니까? [sybase] 태그 정리 중 ... –