Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 检测for循环中的最后一条记录_Oracle_Plsql_Oracle11g - Fatal编程技术网

Oracle 检测for循环中的最后一条记录

Oracle 检测for循环中的最后一条记录,oracle,plsql,oracle11g,Oracle,Plsql,Oracle11g,我有一系列循环,将来自数据表的clob以奇怪的伪json格式组合在一起 我遇到的问题是,每个循环都需要以相关字符结束部分,但我无法确定如何识别最后一条记录 到目前为止,我已经: for y in (select distinct ident from table(an_object)) loop pseudojson := pseudojson || '{'; the_row := y.ident; for z in (select * from table(an_object)

我有一系列循环,将来自数据表的clob以奇怪的伪json格式组合在一起

我遇到的问题是,每个循环都需要以相关字符结束部分,但我无法确定如何识别最后一条记录

到目前为止,我已经:

for y in (select distinct ident from table(an_object))
loop
  pseudojson := pseudojson || '{';

  the_row := y.ident;
  for z in (select * from table(an_object) where ident = the_row)
    loop
    pseudojson := pseudojson || z.the_key ||': "' || z.the_value ||'"';
    -- (1)
    end loop;

  pseudojson := pseudojson || '}';
  -- (2)
end loop;

pseudojson := pseudojson || '}';
一个_对象
包含未插入的数据,按
ident
分组到前几行

从逻辑上讲,我想把下面的内容塞进

(一)

及(二)

但是这些操作符在for循环中不起作用


有人能给我一个正确的方向吗?

这个怎么样:做你想做的事,在循环中连接常用字符,包括“最后”行

退出循环后,
RTRIM
将删除多余的字符(逗号,对吗?)。大概是这样的:

for y in (select distinct ident from table(an_object))
loop
  pseudojson := pseudojson || '{';

  the_row := y.ident;
  for z in (select * from table(an_object) where ident = the_row)
    loop
    pseudojson := pseudojson || z.the_key ||': "' || z.the_value ||'"';
    -- (1)
    pseudojson := pseudojson ||',';
    end loop;

    pseudojson := rtrim(pseudojson, ',');  --> this

  pseudojson := pseudojson || '}';
  -- (2)
  pseudojson := pseudojson ||',';
end loop;

pseudojson := rtrim(pseudojson, ',');      --> this
pseudojson := pseudojson || '}';

你可以这样做。您需要一个布尔变量:

first := true;
在循环内部:

if not first then
    pseudojson := pseudojson || ','; 
end if;
first := false;
-- Add the element
...

如果是最后一条记录呢。应该是什么样子like@XING如果是最后一个,什么也不做,退出循环。
first := true;
if not first then
    pseudojson := pseudojson || ','; 
end if;
first := false;
-- Add the element
...