2010-12-03 2 views
1

저장 프로 시저를 만들려고하는데 오류가 발생했습니다. 하위 쿼리는 아래 쿼리에 대해 둘 이상의 행을 반환합니다. 커서를 사용하여 수행 할 수 있지만 여러 테이블에 대한 저장 프로 시저에 추가해야하는이 쿼리가 여러 개 있기 때문에 커서를 사용하지 않고 저장 프로 시저에서이 쿼리를 직접 실행할 수있는 다른 방법이 있습니다.저장 프로 시저 오류 : 하위 쿼리가 두 개 이상의 행을 반환합니다.

검색어 : -

UPDATE ipcc_patent_ipc_class 
SET assignee_type = (
SELECT IF(ipcc_patent_master.assignee_type='$ipcc_config_param[0]',$ipcc_config_value[0],IF(ipcc_patent_master.assignee_type='$ipcc_config_param[1]',$ipcc_config_value[1],null)) 
FROM ipcc_patent_master 
WHERE ipcc_patent_ipc_class.patent_id = patent_uid); 

하지만이 쿼리가 여러 필드에 대한 작동 : -

UPDATE ipcc_patent_ipc_class 
SET geographies_id=(
    SELECT ipcc_geographies.geographies_uid 
    FROM ipcc_patent_master,ipcc_geographies 
    WHERE ipcc_patent_master.geographies = ipcc_geographies.geographies 
    AND ipcc_patent_ipc_class.patent_id = ipcc_patent_master.patent_uid 
), 
jurisdictions_id =(
    SELECT ipcc_jurisdictions.jurisdisctions_uid 
    FROM ipcc_patent_master,ipcc_jurisdictions 
    WHERE ipcc_patent_master.jurisdictions = ipcc_jurisdictions.jurisdictions 
    AND ipcc_patent_ipc_class.patent_id = ipcc_patent_master.patent_uid 
), 
country_code_id =(
    SELECT ipcc_country_code.country_code_uid 
    FROM ipcc_patent_master,ipcc_country_code 
    WHERE ipcc_patent_master.country_code= ipcc_country_code.country_code 
    AND ipcc_patent_ipc_class.patent_id = ipcc_patent_master.patent_uid 
); 
+0

당신이 정확한 오류 및 * 시도하고있는 정확한 SQL을 인용 할 수 * SP를 만드시겠습니까? – Unreason

답변

1

이 서브 쿼리의 WHERE 절에 용어를 추가 한 레코드에 쓰러 뜨리거나 LIMIT을 추가 동일한 절.

2

하위 쿼리에 제한 절을 추가하십시오.

+0

한계는 동일한 쿼리가 PHP 스크립트 또는 mysql 쿼리 브라우저를 통해 실행할 때 여러 행을 업데이트하여 원하는 출력을 제공하기 때문에 문제를 해결하지 못했지만 저장 프로 시저에 추가하면 위의 오류가 발생합니다. – user529011

+0

업데이트에 한도를 넣었습니까? 아니면 선택을 했습니까? 나는 후자를 의심한다. – symcbean

0

여기에 하위 쿼리가 전혀 필요하지 않다고 생각합니다. 사용자가 직접 업데이트 쿼리에서 여러 테이블을 참조 할 수 있습니다 해결

http://dev.mysql.com/doc/refman/5.0/en/update.html

+0

select 쿼리에서 조건을 추가했습니다. 어떻게 업데이트를 사용하여 가능합니까 ??? – user529011

0

문제 ... 서브 쿼리 (SELECT 문)에 대한 을, 별명이 오류가 발생할 patent_uid 누락되었다. 별칭으로 테이블 이름을 입력 한 후,이 .. 저장 프로 시저 내부에서 제대로 작동하기 시작

당신의 친절한 도움을

감사합니다들 ...

관련 문제