2010-12-03 85 views
1

我想創建一個存儲過程,但給我一個錯誤:子查詢爲以下查詢返回多於1行。這可以使用遊標來完成,但有沒有其他方法可以直接在存儲過程中運行此查詢而無需使用遊標,因爲有多種查詢需要在存儲過程中添加多個表。存儲過程錯誤:子查詢返回多於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 2010-12-03 08:26:08

回答

1

添加更多字詞與您的子查詢的WHERE條款把它歸結爲一個記錄,或添加LIMIT條款相同。

2

在您的子查詢中添加限制子句。

+0

限制並沒有解決問題,因爲當通過php腳本或mysql查詢瀏覽器運行相同的查詢時,通過更新多行,但添加到存儲過程時給出了所需的輸出提供了上述錯誤。 – user529011 2010-12-03 07:54:38

+0

您是否在更新或選擇中添加了限制?我懷疑後者。 – symcbean 2010-12-03 10:10:54

0

問題解決了...... 子查詢(SELECT語句),別名失蹤了patent_uid從而導致這個錯誤。 輸入表名作爲別名後,它開始在存儲過程中正常工作..

謝謝你們對你的幫助......

相關問題