首页 文章

选择列值作为过程的输入参数

提问于
浏览
0

我有一个用Oracle编写的过程,它接受一个Number类型的输入参数 . 在我的任务中,我想从另一个表中选择一个列值,并将该值作为输入参数提供给我的过程 .

类似下面的东西,

create or replace
PROCEDURE GETXML_JOB_SP
(
 Select ID from Department AS inputVariable_ID IN;
)

AS
 O_JDATA  CLOB ;
 o_JDXmlData xmltype;
 o_JEXmlData xmltype;
 O_JEDATA CLOB;
 queryCtx dbms_xmlquery.ctxType;


BEGIN
O_JDATA := DBMS_XMLGEN.GETXML('SELECT * from Emp where JOB_DTLS_ID='||inputVariable_ID );

o_JDXmlData := xmltype(O_JDATA);

DBMS_OUTPUT.PUT_LINE(o_JDXmlData.getClobVal) ; 
END GETXML_JOB_SP;

2 回答

  • 0

    您的参数定义不正确 . 您不能将select语句作为参数 .

    create or replace
    PROCEDURE GETXML_JOB_SP
    (
    inputVariable_ID IN NUMBER
    )
    
    AS
     O_JDATA  CLOB ;
     o_JDXmlData xmltype;
     o_JEXmlData xmltype;
     O_JEDATA CLOB;
     queryCtx dbms_xmlquery.ctxType;
    
    
    BEGIN
    O_JDATA := DBMS_XMLGEN.GETXML('SELECT * from Emp where JOB_DTLS_ID='||inputVariable_ID );
    
    o_JDXmlData := xmltype(O_JDATA);
    
    DBMS_OUTPUT.PUT_LINE(o_JDXmlData.getClobVal) ; 
    END GETXML_JOB_SP;
    

    我建议阅读PL / SQL上的Oracle Documentation或许多在线教程 .

  • 0

    嗨,在你的情况下你需要创建两个程序一个是“OldProgrammer”写的

    create or replace
    PROCEDURE GETXML_JOB_SP
    (
    inputVariable_ID IN NUMBER
    )
    
    AS
     O_JDATA  CLOB ;
     o_JDXmlData xmltype;
     o_JEXmlData xmltype;
     O_JEDATA CLOB;
     queryCtx dbms_xmlquery.ctxType;
    
    
    BEGIN
    O_JDATA := DBMS_XMLGEN.GETXML('SELECT * from Emp where JOB_DTLS_ID='||inputVariable_ID );
    
    o_JDXmlData := xmltype(O_JDATA);
    
    DBMS_OUTPUT.PUT_LINE(o_JDXmlData.getClobVal) ; 
    END GETXML_JOB_SP;
    

    以及作为输入参数调用此proc的其他过程是

    create or replace procedure GETXML_JOB_SP_call
    is 
    begin
       for x in (Select ID from Department)
         loop
              GETXML_JOB_SP(x.id);
         end loop;
    end GETXML_JOB_SP_call;
    

    你需要先打电话给上面的程序 .

相关问题