Re: Calling function from VFP changes character field to Memo
От | Frank Cazabon |
---|---|
Тема | Re: Calling function from VFP changes character field to Memo |
Дата | |
Msg-id | 7dc224a2-df53-de4a-42a6-a61502c71d95@gmail.com обсуждение исходный текст |
Ответ на | Re: Calling function from VFP changes character field to Memo (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Calling function from VFP changes character field to Memo
Re: Calling function from VFP changes character field to Memo |
Список | pgsql-general |
On 15/11/2022 2:44 pm, Tom Lane wrote: > Frank Cazabon <frank.cazabon@gmail.com> writes: >> If however I have a function defined like this >> CREATE OR REPLACE FUNCTION public.testfunction( >> ) >> RETURNS TABLE >> ( >> Firstname character(30) >> ) >> LANGUAGE 'plpgsql' >> AS $BODY$ >> BEGIN >> RETURN QUERY SELECT p.cFirstName FROM patients p; >> END; >> $BODY$; >> And I call: >> SELECT * FROM public.testFunction(); >> Then FirstName returns as a Memo field (similar to a Text field). > This is mostly about whatever software stack you're using on the > client side --- Memo is certainly not something Postgres knows about. > >> Any idea what I need to do to get it to return the character(30) type? > There's no chance of getting back the "30" part with this structure, > because function signatures do not carry length restrictions. > What I expect is happening is that you get firstname as an > unspecified-length "character" type, and something on the client > side is deciding to cope with that by calling it "Memo" instead. > > You could perhaps work around that by defining a named composite > type: > > create type testfunction_result as (firstname character(30), ...); > > create function testfunction() returns setof testfunction_result as ... > > regards, tom lane Thanks, so I could define the function like this - removed the (30): CREATE OR REPLACE FUNCTION public.testfunction( ) RETURNS TABLE ( Firstname character ) LANGUAGE 'plpgsql' I'll try the type definition and see if that helps.
В списке pgsql-general по дате отправления: