Re: PL/pgSQL syntax for strings

Поиск
Список
Период
Сортировка
От Edward Grabczewski
Тема Re: PL/pgSQL syntax for strings
Дата
Msg-id 9s0u0a$1tcj$1@news.tht.net
обсуждение исходный текст
Ответ на Re: PL/pgSQL syntax for strings  (Roberto Mello <rmello@cc.usu.edu>)
Список pgsql-sql
I've sorted this one thanks to John Berkus.
Thanks guys. I've included the solution below
for your interest.

=======================================================
DROP TABLE rtest;
DROP INDEX rtest_xz_index;
DROP INDEX rtest_yz_index;
DROP INDEX rtest_xy_index;


CREATE TABLE rtest (            xz BOX,            yz BOX,            xy BOX);

CREATE INDEX rtest_xz_index ON rtest USING RTREE (xz bigbox_ops);
CREATE INDEX rtest_yz_index ON rtest USING RTREE (yz bigbox_ops);
CREATE INDEX rtest_xy_index ON rtest USING RTREE (xy bigbox_ops);

DROP FUNCTION cube (float,float,float, float,float,float);
CREATE FUNCTION cube (float,float,float,float,float,float)
RETURNS text
AS 'DECLARE     x1 ALIAS FOR $1;     y1 ALIAS FOR $2;     z1 ALIAS FOR $3;     x2 ALIAS FOR $4;     y2 ALIAS FOR $5;
z2 ALIAS FOR $6;     xz_   BOX;     yz_   BOX;     xy_   BOX;     left  VARCHAR;     right VARCHAR;   BEGIN     left
:=to_char(x1,''99999.999'') || '','' ||
 
to_char(z1,''99999.999'');     right := to_char(x2,''99999.999'') || '','' ||
to_char(z2,''99999.999'');     xz_   := left || '','' ||  right;
     left  := to_char(y1,''99999.999'') || '','' ||
to_char(z1,''99999.999'');     right := to_char(y2,''99999.999'') || '','' ||
to_char(z2,''99999.999'');     yz_   := left || '','' ||  right;
     left  := to_char(x1,''99999.999'') || '','' ||
to_char(y1,''99999.999'');     right := to_char(x2,''99999.999'') || '','' ||
to_char(y2,''99999.999'');     xy_   := left || '','' ||  right;
     INSERT INTO rtest(xz,yz,xy)     VALUES (xz_, yz_, xy_);     RETURN null;   END;'
LANGUAGE 'plpgsql';


SELECT cube(1,2,3,10,20,30);

SELECT * FROM rtest
ORDER BY xz USING <<;

SELECT xy, yz, xz FROM rtest
WHERE xz @ '(0.0,0.0),(2.5,2.5)'::box
AND   yz @ '(0.0,0.0),(2.5,2.5)'::box
AND   xy @ '(0.0,0.0),(2.5,2.5)'::box
ORDER BY xy USING <<;








В списке pgsql-sql по дате отправления:

Предыдущее
От: "Edward Grabczewski"
Дата:
Сообщение: SQL FUNCTION return type on INSERT
Следующее
От: "Edward Grabczewski"
Дата:
Сообщение: Re: SQL FUNCTION return type on INSERT