Skip site navigation (1) Skip section navigation (2)

Re: PERFORM statement question

From: "Keith Worthington" <keithw(at)narrowpathinc(dot)com>
To: "PostgreSQL Novice" <pgsql-novice(at)postgresql(dot)org>
Subject: Re: PERFORM statement question
Date: 2004-12-17 01:23:03
Message-ID: 20041217012303.M56176@narrowpathinc.com (view raw or flat)
Thread:
Lists: pgsql-novice
Replying to myself:

Woohoo!

On a whim I changed PERFORM SELECT... to PERFORM and... something else broke.
 As I am sure the experienced programmers are saying "Well of course you items
are over specified."  Yeah, yeah.  We all have to learn. :-)  Fixed that and
wham, it worked.

Now I need to add a couple more conditionals and I will almost be there.

Keith

Hi All,

Well, I am continueing to make progress on my function to transfer or update
data as required.  However I have hit another snag.  After I successfully
create the function below I atttempt to run it with the command

SELECT xfer_gl_account_data();

And get the error

WARNING:  Error occurred while executing PL/pgSQL function xfer_gl_account_data
WARNING:  line 11 at assignment
ERROR:  parser: parse error at or near "SELECT" at character 9

This was an error regarding not using a PERFORM statement but now the PERFORM
is in there and it still won't work.  I have read
http://www.postgresql.org/docs/7.3/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-PERFORM
to no avail.

Obviously I am not using the PERFORM command peroperly but I do not
understand.  Hints greatly appreciated.

Kind Regards,
Keith

CREATE OR REPLACE FUNCTION xfer_gl_account_data() RETURNS INTEGER AS '
   DECLARE
      rcrd_gl_account RECORD;
   BEGIN
      FOR rcrd_gl_account IN SELECT
data_transfer.tbl_peachtree_gl_account.account_id,
                                   
data_transfer.tbl_peachtree_gl_account.description,
                                   
data_transfer.tbl_peachtree_gl_account.account_type,
                                   
data_transfer.tbl_peachtree_gl_account.inactive
                               FROM data_transfer.tbl_peachtree_gl_account
                              ORDER BY
data_transfer.tbl_peachtree_gl_account.account_id
      LOOP
         PERFORM SELECT peachtree.tbl_gl_account.account_id
                   FROM peachtree.tbl_gl_account
                  WHERE peachtree.tbl_gl_account.account_id =
rcrd_gl_account.account_id;
         IF NOT FOUND THEN
            INSERT INTO peachtree.tbl_gl_account
                        ( peachtree.tbl_gl_account.account_id,
                          peachtree.tbl_gl_account.description,
                          peachtree.tbl_gl_account.account_type,
                          peachtree.tbl_gl_account.inactive )
                 VALUES ( rcrd_gl_account.account_id,
                          rcrd_gl_account.description,
                          rcrd_gl_account.account_type,
                          rcrd_gl_account.inactive );
         ELSE
            UPDATE peachtree.tbl_gl_account
               SET peachtree.tbl_gl_account.description =
rcrd_gl_account.description,
                   peachtree.tbl_gl_account.account_type =
rcrd_gl_account.account_type,
                   peachtree.tbl_gl_account.inactive = rcrd_gl_account.inactive
             WHERE peachtree.tbl_gl_account.account_id =
rcrd_gl_account.account_id;
         END IF;
      END LOOP;
      RETURN 1;
   END;
' LANGUAGE 'plpgsql';

______________________________________________
99main Internet Services http://www.99main.com


pgsql-novice by date

Next:From: Keith WorthingtonDate: 2004-12-17 04:05:20
Subject: FUNCTION, TRIGGER and best practices
Previous:From: Tom LaneDate: 2004-12-17 01:08:19
Subject: Re: PERFORM statement question

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group