[SQL] calling function
Hi, I have a little trouble. I'm newbie in postgresql. Consider this function example: create or replace function testcall(int4,varchar,bool,int2) return setof record as ' declare r record; a int4; b varchar; c bool; d int2; begin a=$1; b=$2; c=$3; d=$4; for r in select * from "T_Customer" loop return next r; end loop; return r; end;' language 'plpgsql' when i tried to call it using: select * from testcall(12,'ABCD',true,2); it says: ERROR: function testcall(integer, "unknown", boolean, integer) does not exist then I tried to change to: select * from testcall(12,varchar'ABCD',true,2); it says: ERROR: function testcall(integer, character varying, boolean, integer) does not exist I've tried them using jdbc prepared statement and callable statement (both with/without parameters), but the result is the same. what should i do? Thanks William Need a new email address that people can remember Check out the new EudoraMail at http://www.eudoramail.com ---(end of broadcast)--- TIP 4: Don't 'kill -9' the postmaster
[SQL] function returning resultset
Hi, I'm using PGSQL 7.4.1 and JDBC 75dev client. I want to ask about PL/PGSQL function returning resultset. I read in the docs, there are 'setof' and 'refcursor' method, is there another method to returning resultset? What advantages and disadvantages for each method? Which is the best? Plz explain to me. Thx. W.A. Need a new email address that people can remember Check out the new EudoraMail at http://www.eudoramail.com ---(end of broadcast)--- TIP 8: explain analyze is your friend
Re: [SQL] working with schema
Christoph, First, is it safe for multi user? I mean maybe first user need working with D200402, second one need with D200403, if I do this in first user connection: SET search_path to D200402 ; does it affect to the second user search path? Second, I want it dinamic. So, if I want to using D200402, I just need to pass 'D200402' string in the argument of the function. Got my point? Thanks anyway, William >> >> Hi all, >> >> I'm just experimenting with schema usage. I'm going to use it as a fake >> 'multi-database' system. Is Postgresql support coding schema name using string >> variable so I can pass it with parameter? I'm give u an example: >> >> I have schema: D200401,D200402.D200403,D200404, etc. >> >> I've set my user just like the schema name, so who login with D200401 will be using >> D200401 schema. When someone using D200401 schema, they sometime want to access >> another schema, so in my thought I can use variable like this: >> >> sPointer='D200403' >> >> select * from sPointer.myTable -- Question: How to write it to work properly? >> >> Thanks >> >> >> William >> >> >SET search_path to D200401 ; >SET search_path to D200402 ; >... >should do the job. > >Regards, Christoph > > >---(end of broadcast)--- >TIP 4: Don't 'kill -9' the postmaster > Need a new email address that people can remember Check out the new EudoraMail at http://www.eudoramail.com ---(end of broadcast)--- TIP 6: Have you searched our list archives? http://archives.postgresql.org
Re: [SQL] working with schema
There is something still annoying me Scott.. eg: I want to have function that take a string argument that indicates which schema i want to use. create function testf(varchar) returns ... .. .. .. .. My question is how to use the argument in the function, maybe looks like: select * from $1.test or set search_path to $1 select * from test or maybe I defined a string variable to hold it, workschema='D200402' select * from workschema.test Do they work? Thanks, William >On Wed, 12 May 2004, William Anthony Lim wrote: > >> Christoph, >> >> First, is it safe for multi user? I mean maybe first user need working with >> D200402, second one need with D200403, if I do this in first user connection: >> >> SET search_path to D200402 ; >> >> does it affect to the second user search path? > >No, search paths are session vars. > >> Second, I want it dinamic. So, if I want to using D200402, I just need to pass >> 'D200402' string in the argument of the function. Got my point? > >You should be able to do it with dot notation: > >postgres=# create schema a; >CREATE SCHEMA >postgres=# create schema b; >CREATE SCHEMA >postgres=# create table a.test (info text); >CREATE TABLE >postgres=# create table b.test (info text); >CREATE TABLE >postgres=# insert into a.test values ('abc'); >INSERT 1400496 1 >postgres=# insert into b.test values ('123'); >INSERT 1400497 1 > >-- Now we try to look up the table without setting a search path and no >-- dot notation: > >postgres=# select * from test; >ERROR: relation "test" does not exist >ERROR: relation "test" does not exist > >-- Now we set the search path, notice the order: > >postgres=# set search_path=public,a,b; >SET >postgres=# select * from test; > info >-- > abc >(1 row) > >-- Reverse the order of a and b > >postgres=# set search_path=public,b,a; >SET >postgres=# select * from test; > info >-- > 123 >(1 row) > >-- now without a > >postgres=# set search_path=public,b; >SET >postgres=# select * from test; > info >-- > 123 >(1 row) > >postgres=# set search_path=public,a; >SET >postgres=# select * from test; > info >-- > abc >(1 row) > >-- Now we use dot notation. first a, then b. Notice that >-- b, which isn't in our search path, works fine. > >postgres=# select * from a.test; > info >-- > abc >(1 row) > >postgres=# select * from b.test; > info >-- > 123 >(1 row) > > >> >> Thanks anyway, >> >> William >> >> >> >> >> Hi all, >> >> >> >> I'm just experimenting with schema usage. I'm going to use it as a fake >> >> 'multi-database' system. Is Postgresql support coding schema name using string >> >> variable so I can pass it with parameter? I'm give u an example: >> >> >> >> I have schema: D200401,D200402.D200403,D200404, etc. >> >> >> >> I've set my user just like the schema name, so who login with D200401 will be >> >> using D200401 schema. When someone using D200401 schema, they sometime want to >> >> access another schema, so in my thought I can use variable like this: >> >> >> >> sPointer='D200403' >> >> >> >> select * from sPointer.myTable -- Question: How to write it to work properly? >> >> >> >> Thanks >> >> >> >> >> >> William >> >> >> >> >> >SET search_path to D200401 ; >> >SET search_path to D200402 ; >> >... >> >should do the job. >> > >> >Regards, Christoph >> > >> > >> >---(end of broadcast)--- >> >TIP 4: Don't 'kill -9' the postmaster >> > >> >> >> >> Need a new email address that people can remember >> Check out the new EudoraMail at >> http://www.eudoramail.com >> >> ---(end of broadcast)--- >> TIP 6: Have you searched our list archives? >> >>http://archives.postgresql.org >> > > >---(end of broadcast)--- >TIP 7: don't forget to increase your free space map settings > Need a new email address that people can remember Check out the new EudoraMail at http://www.eudoramail.com ---(end of broadcast)--- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
[SQL] working with schema
Hi all, I'm just experimenting with schema usage. I'm going to use it as a fake 'multi-database' system. Is Postgresql support coding schema name using string variable so I can pass it with parameter? I'm give u an example: I have schema: D200401,D200402.D200403,D200404, etc. I've set my user just like the schema name, so who login with D200401 will be using D200401 schema. When someone using D200401 schema, they sometime want to access another schema, so in my thought I can use variable like this: sPointer='D200403' select * from sPointer.myTable -- Question: How to write it to work properly? Thanks William Need a new email address that people can remember Check out the new EudoraMail at http://www.eudoramail.com ---(end of broadcast)--- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])
[SQL] (No Subject)
is it possible to dump within procedural language/SQL syntax? Using pg_dump from console is very confusing for some end user who don't have Linux skills. so I decide to create a function to do that, and they may call it from my application. Thanks William Need a new email address that people can remember Check out the new EudoraMail at http://www.eudoramail.com ---(end of broadcast)--- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match