为什么我收到错误(29,7):
PL / SQL:ORA-00933:SQL命令未正确结束。
编译以下代码:
CREATE OR REPLACE PROCEDURE paytermupdate
IS
recordcount INT;
BEGIN
recordcount := 0;
SELECT COUNT(1)
INTO recordcount
FROM temp_pay_term;
IF recordcount > 0 THEN
FOR x IN (SELECT r.ddocname
FROM temp_pay_term p, docmeta d, revisions r
WHERE 'p.pid' = 'd.xproject_id'
AND r.did = d.did)
LOOP
UPDATE docmeta
SET paymentterm = p.paymentterm
WHERE did IN (
SELECT MAX(did)
FROM revisions r, docmeta d
WHERE r.ddocname = d.ddocname)
GROUP BY X.ddocname;
END LOOP;
COMMIT;
END IF;
END paytermupdate;
答案 0 :(得分:1)
'p.pid' = 'd.xproject_id'
不应该是单引号,任何方式都不会抛出错误,但它只是字符串比较,而不是列比较
将其更改为p.pid = d.xproject_id
GROUP BY应该只选择
UPDATE docmeta
SET paymentterm = p.paymentterm
WHERE did IN
( SELECT MAX(did) FROM revisions r,docmeta d WHERE r.ddocname = d.ddocname
GROUP BY X.ddocname);
答案 1 :(得分:0)
UPDATE SQL中不能包含 GROUP 。
它也没有感觉。