2012-04-11 7 views
0

Google 검색 후 얼마 지나지 않아 답변을 찾지 못했습니다. 어쨌든 내가 집합을 저장 프로 시저의 상황이 같은 선택이 : 시스템에서 다른 곳에 존재하는 일부 중복 기록 때문에 어쨌든MySql 저장 프로 시저 SET 명령 - 오류가 발생했을 때

SET someVariable = (SELECT ...) 

, 세트에 사용이 SELECT 쿼리는 하나 개 이상의 행을 반환 . 나는 이것이 파손이나 나쁨을 초래할 것이라고 생각하고 있나? 허위 사실?

감사합니다.

+0

스칼라 변수에 여러 레코드를 전달할 수 없습니다. 정확한 레코드를 반환하거나 다른 테이블에 데이터를 삽입하려면 쿼리를 올바르게 작성하십시오. – Devart

+0

이것은 내가 한 일이다. 나는이 특별한 테이블에 중복 된 엔트리가 없으며이를 액면 그대로 받아 들였다는 말을 들었다. 필요로하는 열이 유일하지 않다는 것이 내가 이것을 추적 한 이유입니다. – kmarks2

답변

2

참. 변수에 대입 할 때 질의는 단일 열을 포함하는 단일 행을 반환해야합니다. 다음 구문을 사용하여 수행 할 수도 있습니다.

SELECT someColumn INTO myVariable ... LIMIT 1; 
+0

그리고 두 행이 있다면 경고, 예외입니까, 나머지 절차는 중단됩니까? 감사. – kmarks2

+0

그러면 MySQL에서 오류를 표시합니다 (어느 것이지 확실하지 않지만 "오류 1172 - 결과가 둘 이상의 행으로 구성되었습니다") – bfavaretto

+0

감사합니다. – kmarks2