我正在尝试创建一个函数,它将获取一个条目(ID),然后检查相关的XMLTYPE字段以获取特定的XML值,并根据结果采取行动,但是我将所有部分放在一起时遇到了一些困难。我有以下select语句,用于选择我要查找的XML值:
val counterSource : Source[Counters, NotUsed] = jsonSrc via parserFlow via counterFlow
我到目前为止的功能是:
select x.xmldata.extract('//Fc_curstage/text()').getStringVal()
from test_data x
where id = 149;
我不确定我需要在哪里声明:
create or replace
function get_xmlstatus
(p_stage in NUMBER)
return VARCHAR2 is
v_stage varchar2(20);
begin
return varchar2
IF v_cur_stg = 'INITIAL' THEN
-- Create new record in stage
v_stage := 'INITIAL 1';
ELSIF v_cur_stg = 'RETURNED' THEN
-- Remove any associated records from the stage
v_stage := 'Returned 2';
ELSE
-- this should raise exception
v_stage := 'Blank Expected 3';
END IF;
或者我需要包含select语句,以便函数知道如何处理传递给函数的ID。
答案 0 :(得分:1)
试试这个:
create or replace function get_xmlstatus (p_stage in NUMBER)
return VARCHAR2 is
v_cur_stage varchar2(20);
v_stage varchar2(20);
begin
select x.xmldata.extract('//Fc_curstage/text()').getStringVal()
into v_cur_stg
from test_data x
where id = p_stage; --149;
IF v_cur_stg = 'INITIAL' THEN
-- Create new record in stage
v_stage := 'INITIAL 1';
ELSIF v_cur_stg = 'RETURNED' THEN
-- Remove any associated records from the stage
v_stage := 'Returned 2';
ELSE
-- this should raise exception
v_stage := 'Blank Expected 3';
END IF;
Return v_stage;
End;