选择一个列值作为过程

时间:2015-06-08 11:24:17

标签: xml oracle plsql

我有一个用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 :(得分: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或许多在线教程。

答案 1 :(得分: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;

以及以id作为输入参数调用此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;

首先需要打电话给上述程序。