PLSQL IF / ELSE函数检查XML值

时间:2016-07-20 11:40:17

标签: sql plsql oracle11g

我正在尝试创建一个函数,它将获取一个条目(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。

1 个答案:

答案 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;