2015-06-08 3 views
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; 

ответ

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; 

Я рекомендую прочитать Oracle Documentation на PL/SQL или многие электронные учебники.

+0

Это нормально. но можем ли мы сделать, как я показал в вопросе, я имею в виду, что я не хочу передавать параметр сам по себе, он должен быть взят из самого запроса запроса. –

+0

Не уверен, что я понимаю. Сожалею. – OldProgrammer

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; 

и другую процедуру, чтобы вызвать эту прок с идентификатором, как входной параметр

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; 

вам нужно сначала вызовите процедуру выше.

Смежные вопросы