On 11/12/2013 12:56 PM, Johannes Björk wrote:
Hi, Im hoping someone could help me with this. I am new to any kind of
sql coding so bare with me.

I have written the below working function which I would like to print to
.csv file(s)

|CREATE  FUNCTION  retrieve_info(input_method TEXT,  input_species TEXT)  
RETURNS SETOF
retrieve_info_tblAS  $$
  SELECT  tblA.id,  tblA.method,  tblA.species,  tblA.location
  FROM  tblA
  WHERE  method=input_methodAND  species=input_species
  GROUP  BY  id,  method,  species
  ORDER  BY  location
$$  LANGUAGE'sql';|


*DUMMY DATA*

tblA (filled)

|create  table  tblA(id varchar(5)  PRIMARY  KEY,  method text,  species 
varchar(10),  location
text);
insert  into  tblAvalues  ('1a',  'mtd1',  'sp1',  'locA'),('1b',  'mtd1',  
'sp2',  'locC'),('1c',
'mtd2',  'sp3',  'locB'),('1d',  'mtd1',  'sp1',  'locB'),('1e',  'mtd2',  
'sp5',  'locA');|

retrieve_info_tbl (empty)

|create  table  retrieve_info_tbl(id varchar(5)  PRIMARY  KEY,  method text,  
ind varchar(10),
location text);|

Calling function

|SELECT  *  FROM  retrieve_info('mtd1','sp1');|

*OUTPUT*

|retrieve_info(mtd1,  sp3)

id|  method|  ind|  location
----------------------------
1a|  mtd1|  sp3|  locA
1d|  mtd1|  sp3|  locB|


Since I have not succeeded in this, I tried to work around it creating a
function which called this function and printed the result to a .csv file.

It looks like it is succeeding, it returns a setof. What are you looking to do?


|CREATE  FUNCTION  print_out(x TEXT,  y TEXT)  RETURNS voidAS  $$
  COPY(SELECT  *  FROM  retrieve_info(x,y))  TO  'myfilepath/test.csv'
  WITH  CSV HEADER;
$$  LANGUAGE'sql';|

Calling nested function.

|SELECT  *  FROM  print_out('mtd1','sp1');|

|

*OUTPUT*

The above gives this |ERROR: column "x" does not exist SQL state: 42703
Context: SQL function "print_out" statement 1|. However, when
substituting x,y in print_out() with 'mtd1','sp1' the correct output is
printed to test.csv

I would really appreciate any pointers on either one of the above problems.



Many thanks,

Johannes

|


--
Adrian Klaver
adrian.kla...@gmail.com


--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to