Hi all,
My WHERE clause depends on parameter P_COMPANY. I tried to write PL/SQL but it displayed the error
- Error PL/SQL: ORA-00905: missing keyword
create or replace PROCEDURE SP_RET_STOCK ( P_COMPANY IN VARCHAR2, RS OUT SYS_REFCURSOR) IS P_RET_STATUS VARCHAR2 (5); BEGIN OPEN RS FOR SELECT InvoiceDate, Item, SalePrice, Quantity, Category FROM SALE_INFO WHERE SalePrice > 100 AND (CASE WHEN P_COMPANY = "A" THEN Item IN ('Apple', 'Orange', 'Mantarine') WHEN P_COMPANY = "B" THEN Item IN ('Potato', 'Sweet Potato') WHEN P_COMPANY = "C" THEN Item IN ('Salad', '', 'Pear') END) AND Category = "Vegetable ORDER BY InvoiceDate ASC; END IF; P_RET_STATUS := SQLCODE; EXCEPTION WHEN NO_DATA_FOUND THEN P_RET_STATUS := SQLCODE; WHEN OTHERS THEN P_RET_STATUS := SQLCODE; END SP_RET_STOCK;
For example,
If P_COMPANY = "A", I want the query as shown:
SELECT InvoiceDate, Item, SalePrice, Quantity, Category FROM SALE_INFO WHERE SalePrice > 100 AND Item IN ('Apple', 'Orange', 'Mantarine') AND Category = "Vegetable ORDER BY InvoiceDate ASC;
Anyone knows what wrong with above syntax, please help. Thanks an advance.