<div dir="ltr">Hello,<div><br></div><div>Simplest is to move DROP TABLE from start to end of functions.</div><div><br></div><div>Please have a look at this gist changes: <a href="https://gist.github.com/Komzpa/38b66ee31b14542670529e5c8614f07c/revisions">https://gist.github.com/Komzpa/38b66ee31b14542670529e5c8614f07c/revisions</a></div></div><br><div class="gmail_quote"><div dir="ltr">ср, 6 июн. 2018 г. в 13:07, Paulo Pires <<a href="mailto:paulopires16@gmail.com">paulopires16@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default"><div class="gmail_default"><font color="#444444" face="times new roman, serif">Thanks  Darafei,</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif"><br></font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">See the whole process. Do you mean make just one function?</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif"><br></font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            CREATE OR REPLACE FUNCTION is_internal(polygon geometry, p2 geometry, p3 geometry)</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            RETURNS boolean as</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            $$</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                BEGIN</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    return st_contains(polygon, st_makeline(p2, p3));</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                END</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            $$ language plpgsql;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            </font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            </font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            CREATE OR REPLACE FUNCTION angle(p1 geometry, p2 geometry, p3 geometry)</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            RETURNS float AS</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            $$</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                DECLARE</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    p12 float;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    p23 float;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    p13 float; </font><span style="color:rgb(68,68,68);font-family:"times new roman",serif">   </span></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                BEGIN</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                select st_distance(p1, p2) into p12;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    select st_distance(p1, p3) into p13;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    select st_distance(p2, p3) into p23;</font><span style="color:rgb(68,68,68);font-family:"times new roman",serif">                </span></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    return acos(

<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span> </span>(p12^2 + p13^2 - p23^2) / (2*p12*p13)</span>

);</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                END</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            $$ language plpgsql;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif"><br></font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif"><br></font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            CREATE OR REPLACE FUNCTION internal_angle(polygon geometry, p1 geometry, p2 geometry, p3 geometry)</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            RETURNS float as</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            $$</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                DECLARE</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    ang float;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    is_intern boolean;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                BEGIN</font></div><div class="gmail_default"><span style="color:rgb(68,68,68);font-family:"times new roman",serif">                    select temp.angle(p1, p2, p3) into ang;</span><br></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    select temp.is_internal(polygon, p2, p3) into is_intern;</font></div><div class="gmail_default"><span style="color:rgb(68,68,68);font-family:"times new roman",serif">                    return ang;</span><br></div><div class="gmail_default"><span style="color:rgb(68,68,68);font-family:"times new roman",serif">                END</span><br></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            $$ language plpgsql;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif"><br></font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif"><br></font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            CREATE OR REPLACE FUNCTION corner_triplets(geom geometry)</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            RETURNS table(corner_number integer, p1 geometry, p2 geometry, p3 geometry) AS</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            $$</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                DECLARE</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    max_corner_number integer;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                BEGIN</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    DROP TABLE IF EXISTS corners;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    create temp table corners on commit drop as select path[2] as corner_number, t1.geom as point from (select (st_dumppoints($1)).*) as t1 where path[1] = 1;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    select max(corners.corner_number) into max_corner_number from corners;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    insert into corners (corner_number, point) select 0, point from corners where corners.corner_number = max_corner_number - 1;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            </font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                DROP TABLE IF EXISTS triplets;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    create temp table triplets on commit drop as select t1.corner_number, t1.point as p1, t2.point as p2,  t3.point as p3 from corners as t1, corners as t2, corners as t3 where t1.corner_number = t2.corner_number + 1 and t1.corner_number = t3.corner_number - 1;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    return QUERY TABLE triplets;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                END;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            $$</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            LANGUAGE plpgsql;</font></div></div></div><div dir="ltr"><div class="gmail_default"><div class="gmail_default"><font color="#444444" face="times new roman, serif"><br></font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif"><br></font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            CREATE OR REPLACE FUNCTION internal_angles(geom geometry)</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            RETURNS table(corner geometry, angle float)</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            AS $$</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                BEGIN    </font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    DROP TABLE IF EXISTS internal_angs;</font></div></div></div><div dir="ltr"><div class="gmail_default"><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    create temp table internal_angs on commit drop as select p1, internal_angle(geom, p1, p2, p3) from (select (c).* from (select corner_triplets(geom) as c) as t1) as t2;</font></div></div></div><div dir="ltr"><div class="gmail_default"><div class="gmail_default"><font color="#444444" face="times new roman, serif">                    return QUERY TABLE internal_angs;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">                END;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            $$</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            LANGUAGE plpgsql;</font></div><div class="gmail_default"><br></div></div></div><div dir="ltr"><div class="gmail_default"><div class="gmail_default"><font color="#444444" face="times new roman, serif">            DROP TABLE IF EXISTS allradians;</font></div><div class="gmail_default"><font color="#444444" face="times new roman, serif">            select (c).* into allradians from (select internal_angles(geom) as c from mytable) as t;</font></div></div></div>
_______________________________________________<br>
postgis-users mailing list<br>
<a href="mailto:postgis-users@lists.osgeo.org" target="_blank">postgis-users@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/postgis-users" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/postgis-users</a></blockquote></div>