FUNCTION cf_order_numberformula
   RETURN VARCHAR
IS
   v_suga_customer_po   VARCHAR2 (200);
   v_ps_customer_po     VARCHAR2 (200);   CURSOR customer_po
   IS
      SELECT ooha.cust_po_number, ooha.shipping_instructions
        FROM oe_order_headers_all ooha
       WHERE ooha.order_number = :sales_order;
BEGIN
   OPEN customer_po;   FETCH customer_po
    INTO v_suga_customer_po, v_ps_customer_po;   CLOSE customer_po;   IF (:item_project = 'ZPLS' OR :item_project = 'ZRSC')
   THEN
      RETURN (v_suga_customer_po);
   ELSE
      RETURN (v_ps_customer_po);
   END IF;
EXCEPTION
   WHEN NO_DATA_FOUND
   THEN
      RETURN '';
   WHEN OTHERS
   THEN
      RETURN SQLERRM;
END;总提示说invalid sql statement。不明白

解决方案 »

  1.   

    IF (:item_project = 'ZPLS' OR :item_project = 'ZRSC')
    :item_project 这个哪里来
      

  2.   

    是手动输入的,也可以是在reprot builder中已经有的字段
      

  3.   

     IF (:item_project = 'ZPLS') OR (:item_project = 'ZRSC')
      THEN
      

  4.   

    WHERE ooha.order_number = :sales_order;--这里错误IF (:item_project = 'ZPLS' OR :item_project = 'ZRSC')
      THEN--这里错误
      

  5.   

    CREATE OR REPLACE FUNCTION CF_ORDER_NUMBERFORMULA(ITEM_PROJECT VARCHAR2)
      RETURN VARCHAR2 IS
      V_SUGA_CUSTOMER_PO VARCHAR2(200);
      V_PS_CUSTOMER_PO   VARCHAR2(200);  CURSOR CUSTOMER_PO IS
        SELECT OOHA.CUST_PO_NUMBER, OOHA.SHIPPING_INSTRUCTIONS
          FROM OE_ORDER_HEADERS_ALL OOHA
         WHERE OOHA.ORDER_NUMBER = SALES_ORDER;
    BEGIN
      OPEN CUSTOMER_PO;  FETCH CUSTOMER_PO
        INTO V_SUGA_CUSTOMER_PO, V_PS_CUSTOMER_PO;  CLOSE CUSTOMER_PO;  IF (ITEM_PROJECT = 'ZPLS' OR ITEM_PROJECT = 'ZRSC') THEN
        RETURN(V_SUGA_CUSTOMER_PO);
      ELSE
        RETURN(V_PS_CUSTOMER_PO);
      END IF;
    EXCEPTION
      WHEN NO_DATA_FOUND THEN
        RETURN '';
      WHEN OTHERS THEN
        RETURN SQLERRM;
    END;