calling function - Mailing list pgsql-jdbc

From Bhushan Bhangale
Subject calling function
Date
Msg-id C9590F897BFAD7119E63000BCD682083016593E6@lmnukpriv.lastminute.com
Whole thread Raw
Responses Re: calling function  (Tom Lane <tgl@sss.pgh.pa.us>)
ResultSet missing  (Mariusz Wyrozebski <moon@mat.uni.torun.pl>)
List pgsql-jdbc
Hi All,

I created a following function which works fine when I use this query in
winsql client to execute it

SELECT * FROM getAccomms('en_GB') AS accomm(id INTEGER, name VARCHAR,
min_child_age SMALLINT, max_child_age SMALLINT, image_id VARCHAR, url
VARCHAR, alt_text VARCHAR);

But using java code it doesn't work fine. It just hangs. After this I close
my java program and again execute the above query using winsql it gives
error

Error: ERROR:  relation with OID 659490 does not exist (State:S1000, Native
Code: 7)

Please tell me what is the problem?

CREATE OR REPLACE FUNCTION getAccomms(VARCHAR) RETURNS SETOF record AS '
DECLARE
    locale ALIAS FOR $1;

    accomms RECORD;
    images RECORD;

    innerDelimiter VARCHAR := ''#'';

    id_var VARCHAR := '''';
    url_var VARCHAR := '''';
    alt_text_var VARCHAR := '''';
BEGIN
    CREATE TABLE temp_accomm (
        id                  INTEGER,
        name                VARCHAR(100),
        min_child_age       SMALLINT,
        max_child_age       SMALLINT,
        image_id            VARCHAR(100),
        url                 VARCHAR(500),
        alt_text            VARCHAR(500)
    );

    FOR accomms IN
        SELECT a.id, atxt.name, a.min_child_age, a.max_child_age
        FROM accomm AS a
        INNER JOIN accomm_text AS atxt ON atxt.accomm_id = a.id
        WHERE atxt.locale = locale
    LOOP
        INSERT INTO temp_accomm
        (id, name, min_child_age, max_child_age)
        VALUES (accomms.id, accomms.name, accomms.min_child_age,
accomms.max_child_age);

        FOR images IN
            SELECT image.id, image.url, image.alt_text
            FROM image
            INNER JOIN accomm_images ON accomm_images.image_id = image.id
            WHERE accomm_images.accomm_id = accomms.id
        LOOP
            id_var := id_var || images.id || innerDelimiter;
            url_var := url_var || images.url || innerDelimiter;
            alt_text_var := alt_text_var || images.alt_text ||
innerDelimiter;
        END LOOP;

        id_var := trim(trailing innerDelimiter from id_var);
        url_var := trim(trailing innerDelimiter from url_var);
        alt_text_var := trim(trailing innerDelimiter from alt_text_var);

        UPDATE temp_accomm
        SET image_id = id_var, url = url_var, alt_text = alt_text_var
        WHERE id = accomms.id;

        id_var := '''';
        url_var := '''';
        alt_text_var := '''';

    END LOOP;

    FOR accomms IN
        SELECT id, name, min_child_age, max_child_age, image_id, url,
alt_text
        FROM temp_accomm
    LOOP
        RETURN NEXT accomms;
    END LOOP;

    DROP TABLE temp_accomm;

    RETURN;
END;
' LANGUAGE 'plpgsql';


________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

pgsql-jdbc by date:

Previous
From: Petra Systems
Date:
Subject: Using DataSource and Connection Pooling in Sun's App Server Platform Edition
Next
From: Tom Lane
Date:
Subject: Re: calling function