在存储过程中,怎么把一个字符串当成检索条件?
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;
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;
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;
提示不能识别 immediate
不知道为什么?