我有一个用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;
答案 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;
首先需要打电话给上述程序。