-1

Oracle 11gで次のことを達成する方法。

手順の作成または置換 sel_tblStateMaster (
p_id IN NUMBER DEFAULT NULL,
p_code IN varchar DEFAULT NULL,
p_name IN varchar DEFAULT NULL),
p_result OUT sys_refcursor
なので
始める

// ダミーコード
OPEN p_result FOR SELECT * FROM TBLSTATEMASTER;
そうでない場合 p_code IS NULL
OPEN p_result FOR SELECT * FROM p_result where code=p_code;
終了する場合;

そうでない場合 p_name IS NULL
OPEN p_result FOR SELECT * FROM p_result where name=p_name;
終了する場合;
終わり
/

上記のクエリが正しくないことはわかっています。必要なのは、Oracle の修正されたソリューションだけです。

4

2 に答える 2

0

IF ステートメントには then 句が必要です

    CREATE OR REPLACE PROCEDURE sel_tblStateMaster (
    p_id                IN       NUMBER DEFAULT NULL, 
    p_code                IN       varchar DEFAULT NULL,
    p_name                IN       varchar DEFAULT NULL),
    p_result     OUT      sys_refcursor
    as
    begin

    // Dummy code
    OPEN p_result FOR SELECT * FROM TBLSTATEMASTER;
    if not p_code IS NULL
    then
    OPEN p_result FOR SELECT * FROM p_result where code=p_code;
    end if;

    if not p_name IS NULL
    then
    OPEN p_result FOR SELECT * FROM p_result where name=p_name;
    end if;
    end;
于 2015-04-14T14:38:07.330 に答える