【发布时间】:2021-01-20 18:01:48
【问题描述】:
我真的需要你的帮助。我的情况如下: 我正在尝试在表中插入地理空间数据,但是有一些未关闭的多面体并给出错误。当错误发生时,它会取消插入并且不插入任何行。我想实现一个跳过错误行并插入正确行的过程。
我正在使用 db2 数据库。 这是我正在处理的最后一个代码:
CREATE OR REPLACE PROCEDURE DDM.GEOMETRY_TESTE ()
LANGUAGE SQL
BEGIN
DECLARE CONTINUE HANDLER FOR SQLSTATE '38SSL';
DECLARE CONTINUE HANDLER FOR SQLSTATE '38SSP';
BEGIN
CONTINUE;
END;
INSERT INTO ddm.DM_SICAR_GEOMETRY_TESTE (IDGEOSIGAM, ID_ORIGEM, TIPO_AREA, TIPO_COORDENADA, AREA_GEO, COORDENADAS, CENTROIDE, COORDENADAS_WKT, TESTE)
SELECT
b.IDGEOSIGAM
,b.ID_ORIGEM
,b.TIPO_AREA
,b.TIPO_COORDENADA
,b.AREA_GEO
,db2gse.ST_Point(CONCAT('point(',SUBSTRING(COORDENADAS2,1,LENGTH(b.COORDENADAS2)-2)||')'),1) COORDENADAS
,db2gse.ST_centroid(db2gse.ST_Point(CONCAT('point(',SUBSTRING(b.COORDENADAS2,1,LENGTH(b.COORDENADAS2)-2)||')'),1)) CENTROIDE
,CASE
WHEN b.TIPO_COORDENADA = 'Point' THEN CONCAT('POINT(',SUBSTRING(COORDENADAS2,1,LENGTH(COORDENADAS2)-2)||')')
WHEN b.TIPO_COORDENADA = 'MultiPolygon' THEN CONCAT('MULTIPOLYGON(((',SUBSTRING(COORDENADAS2,1,LENGTH(COORDENADAS2)-2)||')))')
END COORDENADAS_WKT
,CASE
WHEN b.TIPO_COORDENADA = 'Point' THEN db2gse.ST_Point(CONCAT('POINT(',SUBSTRING(b.COORDENADAS2,1,LENGTH(b.COORDENADAS2)-2)||')'),1)
WHEN b.TIPO_COORDENADA = 'MultiPolygon' THEN db2gse.ST_MultiPolygon(CONCAT('MULTIPOLYGON(((',SUBSTRING(b.COORDENADAS2,1,LENGTH(b.COORDENADAS2)-2)||')))'),1)
END TESTE
FROM
(
SELECT
a.IDGEOSIGAM
,a.ID_ORIGEM
,a.TIPO_AREA
,a.TIPO_COORDENADA
,a.AREA_GEO
,SUBSTRING(xmlserialize(xmlagg(xmltext(a.LONGLATI) ORDER BY a.ID_ORIGEM, a.IDGEOSIGAM, a.ID_SEQ) as CLOB(1073741824)), 0) COORDENADAS2
FROM
(
SELECT
g.IDGEOSIGAM
,g.ID_ORIGEM
,g.TIPO_AREA
,c.TIPO_COORDENADA
,g.AREA_GEO
,c.ID_SEQ
,c.LONGITUDE
,c.LATITUDE
,CONCAT(c.LATITUDE||' '||c.LONGITUDE,', ') LONGLATI
FROM
ddm.DM_SICAR_GEO g
INNER JOIN ddm.DM_SICAR_GEO_COORDENADAS c ON c.ID_ORIGEM = g.ID_ORIGEM AND c.IDGEOSIGAM = g.IDGEOSIGAM
WHERE
g.IDGEOSIGAM in (3274, 49069, 63397, 20224, 20222)
--g.ID_ORIGEM = 478
ORDER BY
g.ID_ORIGEM
,g.IDGEOSIGAM
,c.ID_SEQ
) a
GROUP BY
a.IDGEOSIGAM
,a.ID_ORIGEM
,a.TIPO_AREA
,a.TIPO_COORDENADA
,a.AREA_GEO
) b;
END
【问题讨论】: