oracle in字符串处理,函数中SQL中in 后面跟字符串要怎么做,请大侠们帮忙!

用动态SQL和package, 从一个到五个p_sub

create or replace package mypack is

function GET_ZBH_QTY(P_ITEM_ID IN NUMBER,S_ID IN NUMBER,P_SUB IN VARCHAR2) return number;

function GET_ZBH_QTY(P_ITEM_ID IN NUMBER,S_ID IN NUMBER

, P_SUB1 IN VARCHAR2, P_SUB2 IN VARCHAR2) return number;

function GET_ZBH_QTY(P_ITEM_ID IN NUMBER,S_ID IN NUMBER

, P_SUB1 IN VARCHAR2, P_SUB2 IN VARCHAR2, P_SUB3 IN VARCHAR2) return number;

function GET_ZBH_QTY(P_ITEM_ID IN NUMBER,S_ID IN NUMBER

, P_SUB1 IN VARCHAR2, P_SUB2 IN VARCHAR2, P_SUB3 IN VARCHAR2, P_SUB4 IN VARCHAR2) return number;

function GET_ZBH_QTY(P_ITEM_ID IN NUMBER,S_ID IN NUMBER

, P_SUB1 IN VARCHAR2, P_SUB2 IN VARCHAR2, P_SUB3 IN VARCHAR2, P_SUB4 IN VARCHAR2

, P_SUB5 IN VARCHAR2) return number;

end;

/

show error

create or replace package body mypack is

function GET_ZBH_QTY(P_ITEM_ID IN NUMBER,S_ID IN NUMBER,P_SUB IN VARCHAR2) return number is

begin

Result number;

begin

execute immediate 'SELECT SUM(T.TRANSACTION_QUANTITY)'||

' FROM INV.MTL_MATERIAL_TRANSACTIONS T '||

' WHERE T.SUBINVENTORY_CODE <> ''ZBH01'''||

' AND T.SUBINVENTORY_CODE IN ('''||P_SUB||''')'||

' AND T.INVENTORY_ITEM_ID = '||P_ITEM_ID||' '||

' AND T.TRX_SOURCE_LINE_ID = '||S_ID||' '||

' AND T.TRANSACTION_TYPE_ID = 52'

INTO Result;

return(Result);

end;

function GET_ZBH_QTY(P_ITEM_ID IN NUMBER,S_ID IN NUMBER

, P_SUB1 IN VARCHAR2, P_SUB2 IN VARCHAR2) return number is

begin

retrun mypack.get_zbh_qty(p_item_id,s_id,p_sub1||''','''||p_sub2);

end;

function GET_ZBH_QTY(P_ITEM_ID IN NUMBER,S_ID IN NUMBER

, P_SUB1 IN VARCHAR2, P_SUB2 IN VARCHAR2, P_SUB3 IN VARCHAR2) return number is

begin

retrun mypack.get_zbh_qty(p_item_id,s_id,p_sub1||''','''||p_sub2,p_sub3);

end;

function GET_ZBH_QTY(P_ITEM_ID IN NUMBER,S_ID IN NUMBER

, P_SUB1 IN VARCHAR2, P_SUB2 IN VARCHAR2, P_SUB3 IN VARCHAR2, P_SUB4 IN VARCHAR2) return number is

begin

retrun mypack.get_zbh_qty(p_item_id,s_id,p_sub1||''','''||p_sub2,p_sub3,p_sub4);

end;

function GET_ZBH_QTY(P_ITEM_ID IN NUMBER,S_ID IN NUMBER

, P_SUB1 IN VARCHAR2, P_SUB2 IN VARCHAR2, P_SUB3 IN VARCHAR2, P_SUB4 IN VARCHAR2

, P_SUB5 IN VARCHAR2) return number is

begin

retrun mypack.get_zbh_qty(p_item_id,s_id,p_sub1||''','''||p_sub2,p_sub3,p_sub4,p_sub5);

end;

end;

/

show error

mypack.GET_ZBH_QTY(99,99,'XE1');

mypack.GET_ZBH_QTY(99,99,'XE1','XE2','XE3','XE4);

mypack.GET_ZBH_QTY(99,99,'XE1','XE2','XE3','XE4','XE5');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值