有个现存PACKAGE 名字是WPA_CONTEXT
里面有个ProcedurePROCEDURE SET_CONTEXT_USER(
I$PROSESSID   IN  VARCHAR2,
I$USER_ID     IN  VARCHAR2,
I$SEQ         IN  VARCHAR2,
I$ACTION_ID   IN  VARCHAR2,
I$LOCALE      IN  VARCHAR2,
O$RETURNCD    OUT VARCHAR2,
O$MSG         OUT VARCHAR2
)IS
LOGINR WT_LOGIN%ROWTYPE;
BEGIN
BEGIN
--複数件数あっても、最新の情報を優先する。
SELECT * INTO LOGINR FROM WT_LOGIN
WHERE USER_ID = I$USER_ID AND ROWNUM = 1
ORDER BY LAST_REQ_TM DESC;
EXCEPTION
WHEN NO_DATA_FOUND THEN
O$RETURNCD := '1';
RETURN; WHEN OTHERS THEN
O$RETURNCD := '9';
O$MSG := SQLERRM;
RETURN;
END; BEGIN
WPA_CONTEXT.SET_PROCESSID(I$PROSESSID);
WPA_CONTEXT.SET_USERID(LOGINR.USER_ID);
WPA_CONTEXT.SET_LOGIN_SEQ(I$SEQ);
WPA_CONTEXT.SET_ACTION_ID(I$ACTION_ID);
WPA_CONTEXT.SET_EXT_ATTR1(LOGINR.EXT_ATTR1);
WPA_CONTEXT.SET_EXT_ATTR2(LOGINR.EXT_ATTR2);
WPA_CONTEXT.SET_EXT_ATTR3(LOGINR.EXT_ATTR3);
WPA_CONTEXT.SET_ARC_CD(LOGINR.ARC_CD);
WPA_CONTEXT.SET_CLT_ID(LOGINR.CLT_ID);
WPA_CONTEXT.SET_LOCALE(I$LOCALE);
EXCEPTION
WHEN OTHERS THEN
O$RETURNCD := '9';
O$MSG := SQLERRM;
RETURN;
END;
O$RETURNCD := '0';
O$MSG := '';
END ; PROCEDURE SET_CONTEXT_USER(
I$PROSESSID   IN  VARCHAR2,
I$USER_ID     IN  VARCHAR2,
I$SEQ         IN  VARCHAR2,
I$ACTION_ID   IN  VARCHAR2,
O$RETURNCD    OUT VARCHAR2,
O$MSG         OUT VARCHAR2
) IS
LOGINR WT_LOGIN%ROWTYPE;
BEGIN WPA_CONTEXT.SET_CONTEXT_USER(
I$PROSESSID,
I$USER_ID,
I$SEQ,
I$ACTION_ID,
'',
O$RETURNCD,
O$MSG); END;现在又写了个Procedure 叫M_BOM_ECM_TO_M_BOM
调用SET_CONTEXT_USERrtn := WPA_CONTEXT.SET_CONTEXT_USER('123456',userid,'1','123','','','');报错说参数或者类型不一致 请高手指点

解决方案 »

  1.   

    rtn := WPA_CONTEXT.SET_CONTEXT_USER('123456',userid,'1','123','1',V_RETURNCD,V_MSG);
    这样还是报相同的错误。
      

  2.   

    V_RETURNCD这连哥哥变量你定义没有呢?
    userid是什么呢?是变量吗?
      

  3.   

    变量我都定义了CREATE OR REPLACE PROCEDURE M_BOM_ECM_TO_M_BOM
    (
    scr_code IN VARCHAR2,      --SCR_CODE
    userid IN VARCHAR2,        --ユーザID
    csloginflg IN VARCHAR2,    --CS登録フラグ 1(固定)
    oyahinmoncode IN VARCHAR2, --テーマ
    hinmoncode IN VARCHAR2,    --品目コード
    status OUT VARCHAR2
    )
    IS
    rtn VARCHAR2(100);
    V_RETURNCD VARCHAR2(100);
    V_MSG VARCHAR2(100);
    BEGINrtn := WPA_CONTEXT.SET_CONTEXT_USER('123456',userid,'1','123','1',V_RETURNCD,V_MSG);
    --(4) MCFrameログイン処理の実施
    --MCFrameログイン処理を実施する。
    --ログイン処理は、MCFrameの下記パッケージを使用して行う。
    --PACKAGE:WPA_CONTEXT
    --※パッケージを使用しない場合、各マスタに登録されているトリガ処理にて、
    --ユーザIDが正しく設定されないため、ログイン処理は必須事項とする。-- (5) データ登録処理
    -- ログイン処理実施後、M_BOM_ECMより登録対象データをMCFrameマスタ(M_BOM)に登録する。
    INSERT INTO M_BOM (
    親品目コード,
    構成パターン,
    子品目コード,
    代替GRPコード,
    使用開始日,
    手順コード,
    下限手配NO,
    下限副手配NO,
    親必要量,
    子投入量,
    子必要量,
    子固定投入量,
    子固定必要量,
    在庫引当区分,
    代替GRPフラグ,
    着手起算LT,
    着手起算LT時間単位,
    完了起算LT,
    完了起算LT時間単位,
    手配区分,
    上限手配NO,
    副手配区分,
    上限副手配NO,
    展開優先レベル,
    MRP対象外フラグ,
    原価対象外フラグ,
    展開手配NOフラグ,
    展開副手配NOフラグ,
    自動投入対象外フラグ,
    使用停止日,
    備考,
    展開不要フラグ
    )
    (select 
    親品目コード,
    構成パターン,
    子品目コード,
    代替GRPコード,
    使用開始日,
    手順コード,
    下限手配NO,
    下限副手配NO,
    親必要量,
    子投入量,
    子必要量,
    子固定投入量,
    子固定必要量,
    在庫引当区分,
    代替GRPフラグ,
    着手起算LT,
    着手起算LT時間単位,
    完了起算LT,
    完了起算LT時間単位,
    手配区分,
    上限手配NO,
    副手配区分,
    上限副手配NO,
    展開優先レベル,
    MRP対象外フラグ,
    原価対象外フラグ,
    展開手配NOフラグ,
    展開副手配NOフラグ,
    自動投入対象外フラグ,
    使用停止日,
    備考,
    展開不要フラグ
    from M_BOM_ECM
    where M_BOM_ECM.親品目コード=oyahinmoncode 
    and M_BOM_ECM.子品目コード=hinmoncode
    and M_BOM_ECM.更新担当者コード=userid
    and M_BOM_ECM.CS登録フラグ=csloginflg
    );-- (6) 一時台帳データ削除処理
    -- 一時台帳(M_BOM_ECM)より、更新を実施したレコードを削除する。
    DELETE FROM M_BOM_ECM WHERE M_BOM_ECM.親品目コード=oyahinmoncode and M_BOM_ECM.子品目コード=hinmoncode;-- (7)CS部品ワークファイルテーブルの削除処理
    -- CS部品ワークファイルテーブルより、CSマスタ登録画面にて更新を実施したテーマに関連するレコードを削除する。
    DELETE FROM SEWCS WHERE SEWCS.CSSHBN=oyahinmoncode and SEWCS.CSKHBN=hinmoncode;status:='OK';
    COMMIT;
    EXCEPTION WHEN OTHERS THEN 
    status:='ERROR';END M_BOM_ECM_TO_M_BOM;
    rtn := WPA_CONTEXT.SET_CONTEXT_USER('123456',userid,'1','123','1',V_RETURNCD,V_MSG);
    出错
      

  4.   

    procedure 怎么会有返回值呢?你把rtn:=这个去掉试下呢