pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Emi Lu <emilu@encs.concordia.ca>
To: Markus Bertheau <mbertheau.pg@googlemail.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: in PlPgSQL function, how to use variable in a "select ...
Date: Fri, 17 Mar 2006 14:23:57 -0500
Message-ID: <441B0CCD.9020704@encs.concordia.ca> (raw)
In-Reply-To: <684362e10603170956j20174d07q@mail.gmail.com>
References: <441AF775.7060006@encs.concordia.ca>
	<684362e10603170956j20174d07q@mail.gmail.com>

Does not work either, the whole function is:

create table t1(col1 varchar(3), col2 varchar(100));
insert into t1 values('001', 'Result 1');
insert into t1 values('002', 'Result 2');
insert into t1 values('003', 'Result 3');

CREATE OR REPLACE FUNCTION test(VARCHAR) RETURNS VARCHAR AS $$
DECLARE
   col1_value                ALIAS FOR $1;                          
   cm_tableName           st1_legend.code_map_tablename%TYPE; 
   lengendTableName    VARCHAR := 't1';
   query_value                VARCHAR ;
BEGIN

   SELECT INTO cm_tableName col2 FROM lengendTableName WHERE col1 = 
col1_value ;
   EXECUTE query_value;
 
   RETURN cm_tableName;
 END;
$$ language 'plpgsql' IMMUTABLE STRICT;

select test('001');
Error:
ERROR:  syntax error at or near "$1" at character 20
QUERY:  SELECT  col2 FROM  $1  WHERE col1 =  $2
CONTEXT:  PL/pgSQL function "test" line 8 at select into variables
LINE 1: SELECT  col2 FROM  $1  WHERE col1 =  $2

Does it mean I have to use the cursor ?

Thanks,
Ying


>I think it is SELECT INTO cm_tableName col2 FROM ... WHERE ...
>
>2006/3/17, Emi Lu <emilu@encs.concordia.ca>:
>  
>
>>Hello,
>>
>>In pl/pgsql (postgresql 8.01), how to use variables in select .. into ..
>>command
>>
>>CREATE OR REPLACE FUNCTION test(VARCHAR) RETURNS VARCHAR AS $$
>>DECLARE
>>   var1                           ALIAS FOR $1;
>>   cm_tableName           tableA.col1%TYPE;
>>   T1                              VARCHAR := 'sourceTable';
>>   query_value               VARCHAR ;
>>BEGIN
>>
>>   SELECT col2 INTO cm_tableName FROM  T1  WHERE col1 = var1 ;
>>   EXECUTE query_value;
>>
>>
>>   RETURN cm_tableName;
>> END;
>>$$ language 'plpgsql' IMMUTABLE STRICT;
>>
>>select test('abc');
>>
>>Failed.
>>
>>
>>Also, tried "SELECT col2 INTO cm_tableName FROM ||  T1  WHERE col1 =  ||
>>var1 " and
>>"SELECT col2 INTO cm_tableName FROM ||  T1 ||  WHERE col1 =  || var1"
>>
>>Failed as well.
>>
>>T1 and var1 both are variables, may I how to use variables in a "select
>>... into " query please?
>>
>>Thanks a lot,
>>Ying
>>
>>
>>
>>
>>
>>---------------------------(end of broadcast)---------------------------
>>TIP 6: explain analyze is your friend
>>
>>    
>>




view thread (5+ messages)  latest in thread

Message-ID: <441B0CCD.9020704@encs.concordia.ca>
Permalink:  ../441B0CCD.9020704@encs.concordia.ca/
Also on:    postgresql.org/message-id/441B0CCD.9020704@encs.concordia.ca

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: emilu@encs.concordia.ca, mbertheau.pg@googlemail.com
  Subject: Re: in PlPgSQL function, how to use variable in a "select ...
  In-Reply-To: <441B0CCD.9020704@encs.concordia.ca>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox