Re: Function nesting issue
От | 张海峰 |
---|---|
Тема | Re: Function nesting issue |
Дата | |
Msg-id | 2e91b5481001280526h606d9fe1o3fd7bbca6cf55890@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Function nesting issue (Raymond O'Donnell <rod@iol.ie>) |
Ответы |
Re: Function nesting issue
|
Список | pgsql-general |
Actually, the real function name is t_outer and t_inner, a and b is just for convenience. So you can see them as CREATE OR REPLACE FUNCTION a (out ... and CREATE OR REPLACE FUNCTION b (out ... And i call function a by jdbc: ... conn.setAutoCommit(false); CallableStatement cs = conn.prepareCall("{ call a( ?, ? ) }"); cs.registerOutParameter(1, Types.INTEGER); cs.registerOutParameter(2, Types.OTHER); cs.execute(); ResultSet rs = (ResultSet) cs.getObject(2); ... 2010/1/28 Raymond O'Donnell <rod@iol.ie>: > On 28/01/2010 07:32, 张海峰 wrote: >> i have 2 functions, naming a and b, both outputing a resultset(cursor) >> and a integer. >> a calls b >> >> a: >> CREATE OR REPLACE FUNCTION "public"."t_outer" (out o_rs >> "pg_catalog"."refcursor", out o_i integer) RETURNS record AS >> ... >> select t_inner(o_rs, o_i); >> ... >> >> b: >> CREATE OR REPLACE FUNCTION "public"."t_inner" (out o_rs >> "pg_catalog"."refcursor", out o_i integer) RETURNS record AS >> ... >> >> Compilation is ok, but when i call a, it says: >> ERROR: function b(refcursor, integer) does not exist >> No function matches the given name and argument types. You might need >> to add explicit type casts. > > Can you post the query that calls the outer function? In the above, > you've named your functions t_outer() and t_inner(); so if you're trying > to call a function named b(), then naturally you'll get an error. > > BTW, if your function names are all lower-case, you don't need all the > double-quotes. > > Ray. > > -- > Raymond O'Donnell :: Galway :: Ireland > rod@iol.ie > -- you are my sunshine, my only sunshine...
В списке pgsql-general по дате отправления: