CREATE OR REPLACE FUNCTION master.chkbypram(schemaname text,state text,wallmaterial text,roofmaterial text)
RETURNS SETOF refcursor AS
$BODY$
DECLARE
Resulttable refcursor;
tblinclusion text;
Begin
tblinclusion = 'inclusion'||'_'|| $2 ;
if ( (execute 'SELECT exists(select schema_name FROM information_schema.schemata WHERE schema_name = '||$1||')')and ( execute 'select exists(select * from information_schema.tables where table_name='||tblinclusion||')') )
then
OPEN Resulttable FOR execute ' select * from '||$1||'.'||$2 using schemaname,state;
RETURN NEXT Resulttable;
else
execute 'CREATE SCHEMA '||&1 using schemaname;
tblinclusion = 'inclusion'||'_'|| $2 ;
execute 'create table '||&1||'.'||tblinclusion||' AS
select * from master.population_2 where
statecode = '||$2
|| 'and distinct_key not in
(
select distinct(distinct_key)
from master.population_2
where
(
statecode = '||$2
||'and cast (substr(population_2.hhd_housingcodes, 4) as int ) >= 4
and substr(population_2.hhd_housingcodes, 1,1) in (SELECT code FROM regexp_split_to_table('||$3||', E',') AS code)
and substr(population_2.hhd_housingcodes, 2,1) in (SELECT code FROM regexp_split_to_table('||$4||', E',') AS code)
)
or
statecode = '||$2
||'and
(
cast (substr(population_2.hhd_assetcodes, 4,1) as int)=3
or cast (substr(population_2.hhd_assetcodes, 5,1) as int)=1
or cast (substr(population_2.hhd_assetcodes, 3,1) as int)=1
)
or
statecode = '||$2
||'and
( (cast (substr(population_2.hhd_assetcodes, 1,1) as int)=1 and cast (substr(population_2.hhd_assetcodes, 2,1) as int)in(1,3) and cast (substr(population_2.hhd_assetcodes, 6,1) as int)=1)
or (cast (substr(population_2.hhd_assetcodes, 1,1) as int)=1 and cast (substr(population_2.hhd_assetcodes, 2,1) as int)in(1,3) and cast (substr(population_2.hhd_assetcodes, 4,1) as int)=1)
or (cast (substr(population_2.hhd_assetcodes, 1,1) as int)=1 and cast (substr(population_2.hhd_assetcodes, 6,1) as int)=1 and cast (substr(population_2.hhd_assetcodes, 4,1) as int)=1)
or (cast (substr(population_2.hhd_assetcodes, 2,1) as int)in(1,3) and cast (substr(population_2.hhd_assetcodes, 6,1) as int)=1 and cast (substr(population_2.hhd_assetcodes, 4,1) as int)=1 )
)
) '
using schemaname, state,wallmaterial,roofmaterial;
OPEN Resulttable FOR execute ' select * from '||$1||'.'||tblinclusion using schemaname,state;
RETURN NEXT Resulttable;
end if;
END;
$BODY$
LANGUAGE plpgsql when calling this funtion it is throwing error
select * from master.chkbypram('xyz','04','9,8','4,5,9');
ERROR: type "execute" does not exist
LINE 1: SELECT ( (execute 'SELECT exists(select schema_name FROM inf...
Replies
Know the answer? Post it — somebody with the same question will find it here.