我得到01427. 00000 - 「單行子查詢返回多行」錯誤,同時執行下面的過程。這個問題,我相信,這是在子查詢01427. 00000 - 「單行子查詢返回多個行」
SELECT paymentterm FROM temp_pay_term WHERE pid = d.xProject_id
,但我怎麼能擺脫it.Now的,我已經添加了完整的代碼。請檢查並讓我知道錯誤告訴我是否有更多信息。將被提供。
CREATE OR REPLACE PROCEDURE paytermupdate IS
recordcount INT;
vardid NUMBER(38);
varpaymentterm VARCHAR2(200 CHAR);
BEGIN
recordcount := 0;
SELECT COUNT(1) INTO recordcount
FROM temp_pay_term;
IF recordcount > 0 THEN
FOR x IN (SELECT DISTINCT r.ddocname
FROM temp_pay_term p, docmeta d, revisions r
WHERE TO_CHAR(p.pid) = d.xproject_id AND r.did = d.did )
LOOP
SELECT MAX(did) INTO vardid
FROM revisions r
WHERE r.ddocname = x.ddocname
GROUP BY r.ddocname;
UPDATE docmeta d
SET paymentterm = (
SELECT paymentterm
FROM temp_pay_term
WHERE pid = d.xproject_id
)
WHERE d.did = vardid;
INSERT INTO documenthistory (dactionmillis, dactiondate, did, drevclassid,
duser, ddocname, daction, dsecuritygroup, paymentterm)
SELECT
to_number(TO_CHAR(systimestamp, 'FF')) AS dactionmillis,
TRUNC(systimestamp, 'dd') AS dactiondate,
did,
drevclassid,
'sysadmin' AS duser,
ddocname,
'Update' AS daction,
dsecuritygroup,
paymentterm
FROM revisions
WHERE did = vardid;
END LOOP;
COMMIT;
END IF;
END paytermupdate;
當預期只有一行時,子查詢(查詢中的SELECT)返回多行時會返回此錯誤。不幸的是,你的不完整的代碼不足以讓我們真正地幫助你。 –
如果錯誤在行中:「SELECT paymentterm FROM temp_pay_term WHERE pid = d.xProject_id」,您應該發佈完整語句(以「WHERE d.did = vardid;」結尾)以幫助任何人提供幫助。 –
在查詢中添加了完整的代碼。請檢查。感謝 –