Quantcast
Channel: Oracle, MySQL, Sybase, Informix and other databases
Viewing all articles
Browse latest Browse all 1350

Using parameters in a WHERE clause

$
0
0

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.


Viewing all articles
Browse latest Browse all 1350

Trending Articles