在存储过程中,怎么把一个字符串当成检索条件?
CREATE OR REPLACE PROCEDURE PR_INSERT
(                           
  pIUpdateId   IN  CHAR,                                 
  pOFlag    OUT CHAR                                 
 ) 
IS
 
  wvCondition   VARCHAR2(128);                            
  vCharacter    VARCHAR2(128);
 
  CURSOR csrCondition IS
  SELECT C_CHARACTER 
    FROM TBL_PPS2 
   WHERE C_PARM_ID LIKE 'PK12%';  
BEGIN

    wvCondition := ''; 
    OPEN csrCondition;
    LOOP
        FETCH csrCondition INTO vCharacter;
        EXIT WHEN csrCondition%NOTFOUND;
        wvCondition := wvCondition || vCharacter;
    END LOOP;
    CLOSE csrCondition;    
    SELECT DISTINCT
           PN.C_ARRANGE_CLS,
           O.C_PRODUCT_CLS
      INTO wvArrangeCls,
           wvProductCls         
      FROM TBL_PP09 O,
           TBL_PP10 PN 
     WHERE PN.C_ORDER_NO = O.C_ORDER_NO 
       AND PN.C_SHIPMENT_NO = O.C_SHIPMENT_NO 
       AND PN.C_ORDER_NO = pIcOrderNo
       AND PN.C_PARTS_CD = pIcShipPartsNo;
       --问题就在这里 wvCondition 经连接之后等于 一个检索条件 比如:'PN.C_ARRANGE_CLS = '1' AND (O.C_PRODUCT_CLS = '1'  OR O.C_PRODUCT_CLS = '3')'
       --可是这样做 不可以 问有什么办法?
       AND wvCondition;

解决方案 »

  1.   


    V_SQL:= 'SELECT DISTINCT
               PN.C_ARRANGE_CLS,
               O.C_PRODUCT_CLS
          INTO wvArrangeCls,
               wvProductCls         
          FROM TBL_PP09 O,
               TBL_PP10 PN 
         WHERE PN.C_ORDER_NO = O.C_ORDER_NO 
           AND PN.C_SHIPMENT_NO = O.C_SHIPMENT_NO 
           AND PN.C_ORDER_NO = pIcOrderNo
           AND PN.C_PARTS_CD = pIcShipPartsNo;
           AND ' || wvCondition;   excute immediate V_SQL;
      

  2.   

    Error: PLS-00103:        
    提示不能识别  immediate 
    不知道为什么?
      

  3.   

    而且 wvCondition = 'PN.C_ARRANGE_CLS = '1' AND (O.C_PRODUCT_CLS = '1'  OR O.C_PRODUCT_CLS = '3')'这不是单纯的数值 可以吗?