PLS-00103写入PLSQL块以比较2个标识表中的数据的错误

PLS-00103写入PLSQL块以比较2个标识表中的数据的错误,plsql,syntax-error,Plsql,Syntax Error,下面是我们编写的代码块,用于与相同的表进行比较,但下面是错误代码。有人能帮忙解决这个问题吗 代码: 错误: ORA-06550: line 3, column 34: PLS-00103: Encountered the symbol "," when expecting one of the following: := ; not null default character ORA-06550: line 36, column 9: PLS-00103: Encountered th

下面是我们编写的代码块,用于与相同的表进行比较,但下面是错误代码。有人能帮忙解决这个问题吗

代码:

错误:

ORA-06550: line 3, column 34:
PLS-00103: Encountered the symbol "," when expecting one of the following:

   := ; not null default character
ORA-06550: line 36, column 9:
PLS-00103: Encountered the symbol "CURSOR" when expecting one of the following:

   := . ( , @ % ; not null range default external character

只是一些简单的语法错误。应该是这样的:

DROP TABLE ADJUSTMENT_DETAIL_RPT_COMPARE;

CREATE TABLE ADJUSTMENT_DETAIL_RPT_COMPARE
(
   CUSTOMER_NO           NUMBER (9),
   CREDIT_REASON_S       VARCHAR2 (10 BYTE),
   AR_ACCOUNT_TYPE_S     CHAR (1 BYTE),
   L9_BILLING_TYPE_S     VARCHAR2 (1 BYTE),
   PRODUCT_S             VARCHAR2 (16 BYTE),
   CHARGE_CODE_S         VARCHAR2 (25 BYTE),
   BILL_SEQ_NO_S         NUMBER (12),
   AMOUNT_S              NUMBER,
   TAX_AMOUNT_S          NUMBER,
   REV_AMOUNT_S          NUMBER,
   REV_TAX_AMOUNT_S      NUMBER,
   CREDIT_REASON_T       VARCHAR2 (10 BYTE),
   AR_ACCOUNT_TYPE_T     CHAR (1 BYTE),
   L9_BILLING_TYPE_T     VARCHAR2 (1 BYTE),
   PRODUCT_T             VARCHAR2 (16 BYTE),
   CHARGE_CODE_T         VARCHAR2 (25 BYTE),
   BILL_SEQ_NO_T         NUMBER (12),
   AMOUNT_T              NUMBER,
   TAX_AMOUNT_T          NUMBER,
   REV_AMOUNT_T          NUMBER,
   REV_TAX_AMOUNT_T      NUMBER,
   CREDIT_DATE_S         DATE,
   CREDIT_DATE_T         DATE,
   L9_TELCO_COMP_CODE    VARCHAR2 (4 BYTE),
   AMOUNT_DIFF           NUMBER,
   TAX_AMOUNT_DIFF       NUMBER,
   REV_AMOUNT_DIFF       NUMBER,
   REV_TAX_AMOUNT_DIFF   NUMBER
);

COMMIT;

DECLARE
   v_CUSTOMER_NO_S          NUMBER (9);
   v_CREDIT_REASON_S        VARCHAR2 (10 BYTE);
   v_AR_ACCOUNT_TYPE_S      CHAR (1 BYTE);
   v_L9_BILLING_TYPE_S      VARCHAR2 (1 BYTE);
   v_PRODUCT_S              VARCHAR2 (16 BYTE);
   v_CHARGE_CODE_S          VARCHAR2 (25 BYTE);
   v_BILL_SEQ_NO_S          NUMBER (12);
   v_AMOUNT_S               NUMBER;
   v_TAX_AMOUNT_S           NUMBER;
   v_REV_AMOUNT_S           NUMBER;
   v_REV_TAX_AMOUNT_S       NUMBER;
   v_CREDIT_DATE_S          DATE;
   v_L9_TELCO_COMP_CODE_S   VARCHAR2 (4 BYTE);
   --v_CUSTOMER_NO_T         NUMBER(9),
   --v_CREDIT_REASON_T       VARCHAR2(10 BYTE),
   v_AR_ACCOUNT_TYPE_T      CHAR (1 BYTE);
   v_L9_BILLING_TYPE_T      VARCHAR2 (1 BYTE);
   v_PRODUCT_T              VARCHAR2 (16 BYTE);
   v_CHARGE_CODE_T          VARCHAR2 (25 BYTE);
   v_BILL_SEQ_NO_T          NUMBER (12);
   v_AMOUNT_T               NUMBER;
   v_TAX_AMOUNT_T           NUMBER;
   v_REV_AMOUNT_T           NUMBER;
   v_REV_TAX_AMOUNT_T       NUMBER;
   --v_CREDIT_DATE_T         DATE,
   --v_L9_TELCO_COMP_CODE_T  VARCHAR2(4 BYTE),
   v_AMOUNT_DIFF            NUMBER;
   v_TAX_AMOUNT_DIFF        NUMBER;
   v_REV_AMOUNT_DIFF        NUMBER;
   v_REV_TAX_AMOUNT_DIFF    NUMBER;

   --commit_counter NUMBER(9);

   CURSOR c_EXIST_IN_BOTH
   IS
      (SELECT   CUSTOMER_NO,
                CREDIT_REASON,
                CREDIT_DATE,
                L9_TELCO_COMP_CODE
         FROM   adjustment_detail_rpt
       INTERSECT
       SELECT   CUSTOMER_NO,
                CREDIT_REASON,
                CREDIT_DATE,
                L9_TELCO_COMP_CODE
         FROM   adjustment_detail_rpt1);
BEGIN
   --commit_counter := 0;
   DBMS_OUTPUT.ENABLE (1000000);
   DBMS_OUTPUT.PUT_LINE (CHR (1));
   DBMS_OUTPUT.PUT_LINE ('Creating Compare Records...');

   OPEN c_EXIST_IN_BOTH;

   LOOP
      FETCH c_EXIST_IN_BOTH
         INTO
                   v_CUSTOMER_NO_S, v_CREDIT_REASON_S, v_CREDIT_DATE_S, v_L9_TELCO_COMP_CODE_S;

      EXIT WHEN c_EXIST_IN_BOTH%NOTFOUND;

      BEGIN
         SELECT   CREDIT_REASON,
                  AR_ACCOUNT_TYPE,
                  L9_BILLING_TYPE,
                  PRODUCT,
                  CHARGE_CODE,
                  BILL_SEQ_NO,
                  AMOUNT,
                  TAX_AMOUNT,
                  REV_AMOUNT,
                  REV_TAX_AMOUNT,
                  CREDIT_DATE,
                  L9_TELCO_COMP_CODE
           INTO   v_CREDIT_REASON_S,
                  v_AR_ACCOUNT_TYPE_S,
                  v_L9_BILLING_TYPE_S,
                  v_PRODUCT_S,
                  v_CHARGE_CODE_S,
                  v_BILL_SEQ_NO_S,
                  v_AMOUNT_S,
                  v_TAX_AMOUNT_S,
                  v_REV_AMOUNT_S,
                  v_REV_TAX_AMOUNT_S,
                  v_CREDIT_DATE_S,
                  v_L9_TELCO_COMP_CODE_S
           FROM   adjustment_detail_rpt1
          WHERE       CUSTOMER_NO = v_CUSTOMER_NO_S
                  AND L9_TELCO_COMP_CODE = v_L9_TELCO_COMP_CODE_S
                  AND CREDIT_REASON = v_L9_CREDIT_REASON_S
                  AND CREDIT_DATE = v_CREDIT_DATE_S;
      END;


      BEGIN
         SELECT   CREDIT_REASON,
                  AR_ACCOUNT_TYPE,
                  L9_BILLING_TYPE,
                  PRODUCT,
                  CHARGE_CODE,
                  BILL_SEQ_NO,
                  AMOUNT,
                  TAX_AMOUNT,
                  REV_AMOUNT,
                  REV_TAX_AMOUNT,
                  CREDIT_DATE,
                  L9_TELCO_COMP_CODE
           INTO   v_CREDIT_REASON_T,
                  v_AR_ACCOUNT_TYPE_T,
                  v_L9_BILLING_TYPE_T,
                  v_PRODUCT_T,
                  v_CHARGE_CODE_T,
                  v_BILL_SEQ_NO_T,
                  v_AMOUNT_T,
                  v_TAX_AMOUNT_T,
                  v_REV_AMOUNT_T,
                  v_REV_TAX_AMOUNT_T,
                  v_CREDIT_DATE_T,
                  v_L9_TELCO_COMP_CODE_S
           FROM   adjustment_detail_rpt
          WHERE       CUSTOMER_NO = v_CUSTOMER_NO_S
                  AND L9_TELCO_COMP_CODE = v_L9_TELCO_COMP_CODE_S
                  AND CREDIT_REASON = v_L9_CREDIT_REASON_S
                  AND CREDIT_DATE = v_CREDIT_DATE_S;
      END;

      INSERT INTO ADJUSTMENT_DETAIL_RPT_COMPARE
        VALUES   (v_CUSTOMER_NO_S,
                  v_CREDIT_REASON_S,
                  v_AR_ACCOUNT_TYPE_S,
                  v_L9_BILLING_TYPE_S,
                  v_PRODUCT_S,
                  v_CHARGE_CODE_S,
                  v_BILL_SEQ_NO_S,
                  v_AMOUNT_S,
                  v_TAX_AMOUNT_S,
                  v_REV_AMOUNT_S,
                  v_REV_TAX_AMOUNT_S,
                  v_CREDIT_REASON_T,
                  v_AR_ACCOUNT_TYPE_T,
                  v_L9_BILLING_TYPE_T,
                  v_PRODUCT_T,
                  v_CHARGE_CODE_T,
                  v_BILL_SEQ_NO_T,
                  v_AMOUNT_T,
                  v_TAX_AMOUNT_T,
                  v_REV_AMOUNT_T,
                  v_REV_TAX_AMOUNT_T,
                  v_CREDIT_DATE_S,
                  v_CREDIT_DATE_T,
                  v_L9_TELCO_COMP_CODE_S,
                  NULL,
                  NULL,
                  NULL,
                  NULL);

      COMMIT;
   END LOOP;

   CLOSE c_EXIST_IN_BOTH;

   UPDATE   ADJUSTMENT_DETAIL_RPT_COMPARE
      SET   AMOUNT_DIFF = NVL (AMOUNT_S, 0) - NVL (AMOUNT_T, 0),
            TAX_AMOUNT_DIFF = NVL (TAX_AMOUNT_S, 0) - NVL (TAX_AMOUNT_T, 0),
            REV_AMOUNT_DIFF = NVL (REV_AMOUNT_S, 0) - NVL (REV_AMOUNT_T, 0),
            REV_TAX_AMOUNT_DIFF =
               NVL (REV_TAX_AMOUNT_S, 0) - NVL (REV_TAX_AMOUNT_T, 0);

   COMMIT;
END;
/

抱歉,Stackoverflow不是调试工具。但是,您应该在每个变量声明后加上分号。另外,检查格式化代码。
DROP TABLE ADJUSTMENT_DETAIL_RPT_COMPARE;

CREATE TABLE ADJUSTMENT_DETAIL_RPT_COMPARE
(
   CUSTOMER_NO           NUMBER (9),
   CREDIT_REASON_S       VARCHAR2 (10 BYTE),
   AR_ACCOUNT_TYPE_S     CHAR (1 BYTE),
   L9_BILLING_TYPE_S     VARCHAR2 (1 BYTE),
   PRODUCT_S             VARCHAR2 (16 BYTE),
   CHARGE_CODE_S         VARCHAR2 (25 BYTE),
   BILL_SEQ_NO_S         NUMBER (12),
   AMOUNT_S              NUMBER,
   TAX_AMOUNT_S          NUMBER,
   REV_AMOUNT_S          NUMBER,
   REV_TAX_AMOUNT_S      NUMBER,
   CREDIT_REASON_T       VARCHAR2 (10 BYTE),
   AR_ACCOUNT_TYPE_T     CHAR (1 BYTE),
   L9_BILLING_TYPE_T     VARCHAR2 (1 BYTE),
   PRODUCT_T             VARCHAR2 (16 BYTE),
   CHARGE_CODE_T         VARCHAR2 (25 BYTE),
   BILL_SEQ_NO_T         NUMBER (12),
   AMOUNT_T              NUMBER,
   TAX_AMOUNT_T          NUMBER,
   REV_AMOUNT_T          NUMBER,
   REV_TAX_AMOUNT_T      NUMBER,
   CREDIT_DATE_S         DATE,
   CREDIT_DATE_T         DATE,
   L9_TELCO_COMP_CODE    VARCHAR2 (4 BYTE),
   AMOUNT_DIFF           NUMBER,
   TAX_AMOUNT_DIFF       NUMBER,
   REV_AMOUNT_DIFF       NUMBER,
   REV_TAX_AMOUNT_DIFF   NUMBER
);

COMMIT;

DECLARE
   v_CUSTOMER_NO_S          NUMBER (9);
   v_CREDIT_REASON_S        VARCHAR2 (10 BYTE);
   v_AR_ACCOUNT_TYPE_S      CHAR (1 BYTE);
   v_L9_BILLING_TYPE_S      VARCHAR2 (1 BYTE);
   v_PRODUCT_S              VARCHAR2 (16 BYTE);
   v_CHARGE_CODE_S          VARCHAR2 (25 BYTE);
   v_BILL_SEQ_NO_S          NUMBER (12);
   v_AMOUNT_S               NUMBER;
   v_TAX_AMOUNT_S           NUMBER;
   v_REV_AMOUNT_S           NUMBER;
   v_REV_TAX_AMOUNT_S       NUMBER;
   v_CREDIT_DATE_S          DATE;
   v_L9_TELCO_COMP_CODE_S   VARCHAR2 (4 BYTE);
   --v_CUSTOMER_NO_T         NUMBER(9),
   --v_CREDIT_REASON_T       VARCHAR2(10 BYTE),
   v_AR_ACCOUNT_TYPE_T      CHAR (1 BYTE);
   v_L9_BILLING_TYPE_T      VARCHAR2 (1 BYTE);
   v_PRODUCT_T              VARCHAR2 (16 BYTE);
   v_CHARGE_CODE_T          VARCHAR2 (25 BYTE);
   v_BILL_SEQ_NO_T          NUMBER (12);
   v_AMOUNT_T               NUMBER;
   v_TAX_AMOUNT_T           NUMBER;
   v_REV_AMOUNT_T           NUMBER;
   v_REV_TAX_AMOUNT_T       NUMBER;
   --v_CREDIT_DATE_T         DATE,
   --v_L9_TELCO_COMP_CODE_T  VARCHAR2(4 BYTE),
   v_AMOUNT_DIFF            NUMBER;
   v_TAX_AMOUNT_DIFF        NUMBER;
   v_REV_AMOUNT_DIFF        NUMBER;
   v_REV_TAX_AMOUNT_DIFF    NUMBER;

   --commit_counter NUMBER(9);

   CURSOR c_EXIST_IN_BOTH
   IS
      (SELECT   CUSTOMER_NO,
                CREDIT_REASON,
                CREDIT_DATE,
                L9_TELCO_COMP_CODE
         FROM   adjustment_detail_rpt
       INTERSECT
       SELECT   CUSTOMER_NO,
                CREDIT_REASON,
                CREDIT_DATE,
                L9_TELCO_COMP_CODE
         FROM   adjustment_detail_rpt1);
BEGIN
   --commit_counter := 0;
   DBMS_OUTPUT.ENABLE (1000000);
   DBMS_OUTPUT.PUT_LINE (CHR (1));
   DBMS_OUTPUT.PUT_LINE ('Creating Compare Records...');

   OPEN c_EXIST_IN_BOTH;

   LOOP
      FETCH c_EXIST_IN_BOTH
         INTO
                   v_CUSTOMER_NO_S, v_CREDIT_REASON_S, v_CREDIT_DATE_S, v_L9_TELCO_COMP_CODE_S;

      EXIT WHEN c_EXIST_IN_BOTH%NOTFOUND;

      BEGIN
         SELECT   CREDIT_REASON,
                  AR_ACCOUNT_TYPE,
                  L9_BILLING_TYPE,
                  PRODUCT,
                  CHARGE_CODE,
                  BILL_SEQ_NO,
                  AMOUNT,
                  TAX_AMOUNT,
                  REV_AMOUNT,
                  REV_TAX_AMOUNT,
                  CREDIT_DATE,
                  L9_TELCO_COMP_CODE
           INTO   v_CREDIT_REASON_S,
                  v_AR_ACCOUNT_TYPE_S,
                  v_L9_BILLING_TYPE_S,
                  v_PRODUCT_S,
                  v_CHARGE_CODE_S,
                  v_BILL_SEQ_NO_S,
                  v_AMOUNT_S,
                  v_TAX_AMOUNT_S,
                  v_REV_AMOUNT_S,
                  v_REV_TAX_AMOUNT_S,
                  v_CREDIT_DATE_S,
                  v_L9_TELCO_COMP_CODE_S
           FROM   adjustment_detail_rpt1
          WHERE       CUSTOMER_NO = v_CUSTOMER_NO_S
                  AND L9_TELCO_COMP_CODE = v_L9_TELCO_COMP_CODE_S
                  AND CREDIT_REASON = v_L9_CREDIT_REASON_S
                  AND CREDIT_DATE = v_CREDIT_DATE_S;
      END;


      BEGIN
         SELECT   CREDIT_REASON,
                  AR_ACCOUNT_TYPE,
                  L9_BILLING_TYPE,
                  PRODUCT,
                  CHARGE_CODE,
                  BILL_SEQ_NO,
                  AMOUNT,
                  TAX_AMOUNT,
                  REV_AMOUNT,
                  REV_TAX_AMOUNT,
                  CREDIT_DATE,
                  L9_TELCO_COMP_CODE
           INTO   v_CREDIT_REASON_T,
                  v_AR_ACCOUNT_TYPE_T,
                  v_L9_BILLING_TYPE_T,
                  v_PRODUCT_T,
                  v_CHARGE_CODE_T,
                  v_BILL_SEQ_NO_T,
                  v_AMOUNT_T,
                  v_TAX_AMOUNT_T,
                  v_REV_AMOUNT_T,
                  v_REV_TAX_AMOUNT_T,
                  v_CREDIT_DATE_T,
                  v_L9_TELCO_COMP_CODE_S
           FROM   adjustment_detail_rpt
          WHERE       CUSTOMER_NO = v_CUSTOMER_NO_S
                  AND L9_TELCO_COMP_CODE = v_L9_TELCO_COMP_CODE_S
                  AND CREDIT_REASON = v_L9_CREDIT_REASON_S
                  AND CREDIT_DATE = v_CREDIT_DATE_S;
      END;

      INSERT INTO ADJUSTMENT_DETAIL_RPT_COMPARE
        VALUES   (v_CUSTOMER_NO_S,
                  v_CREDIT_REASON_S,
                  v_AR_ACCOUNT_TYPE_S,
                  v_L9_BILLING_TYPE_S,
                  v_PRODUCT_S,
                  v_CHARGE_CODE_S,
                  v_BILL_SEQ_NO_S,
                  v_AMOUNT_S,
                  v_TAX_AMOUNT_S,
                  v_REV_AMOUNT_S,
                  v_REV_TAX_AMOUNT_S,
                  v_CREDIT_REASON_T,
                  v_AR_ACCOUNT_TYPE_T,
                  v_L9_BILLING_TYPE_T,
                  v_PRODUCT_T,
                  v_CHARGE_CODE_T,
                  v_BILL_SEQ_NO_T,
                  v_AMOUNT_T,
                  v_TAX_AMOUNT_T,
                  v_REV_AMOUNT_T,
                  v_REV_TAX_AMOUNT_T,
                  v_CREDIT_DATE_S,
                  v_CREDIT_DATE_T,
                  v_L9_TELCO_COMP_CODE_S,
                  NULL,
                  NULL,
                  NULL,
                  NULL);

      COMMIT;
   END LOOP;

   CLOSE c_EXIST_IN_BOTH;

   UPDATE   ADJUSTMENT_DETAIL_RPT_COMPARE
      SET   AMOUNT_DIFF = NVL (AMOUNT_S, 0) - NVL (AMOUNT_T, 0),
            TAX_AMOUNT_DIFF = NVL (TAX_AMOUNT_S, 0) - NVL (TAX_AMOUNT_T, 0),
            REV_AMOUNT_DIFF = NVL (REV_AMOUNT_S, 0) - NVL (REV_AMOUNT_T, 0),
            REV_TAX_AMOUNT_DIFF =
               NVL (REV_TAX_AMOUNT_S, 0) - NVL (REV_TAX_AMOUNT_T, 0);

   COMMIT;
END;
/