过程中的错误SQL命令未正确结束

时间:2014-01-09 10:33:50

标签: sql oracle syntax plsql

为什么我收到错误(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;

2 个答案:

答案 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
它也没有感觉。