Re: PL/pgSQL syntax for strings

From: "Edward Grabczewski" <edward(dot)grabczewski(at)btinternet(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: PL/pgSQL syntax for strings
Date: 2001-11-03 14:17:19
Message-ID: 9s0u0a$1tcj$1@news.tht.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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 <<;

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2001-11-03 16:01:02 Re: Strange Problem As Type Casting
Previous Message Edward Grabczewski 2001-11-03 14:12:36 Re: SQL FUNCTION return type on INSERT