Thread: How to use one function which can be accessed for all schemas

How to use one function which can be accessed for all schemas

From
intmail01
Date:
Hi,

I have several schemas in my database, I want to create just one function to use with all these schema.
I create the function in a main schema then the trigger call the function and error occurs : "No function matches the given name and argument types. You might need to add explicit type casts."

How to use just one function which can  be work amongst all shemas in the db ?
My objective is to reduce update of functions code just once not for many schemas. I dont want to duplicate my functions for each schema.

Thanks
intmail01 <intmail01@gmail.com> writes:
> I have several schemas in my database, I want to create just one function
> to use with all these schema.
> I create the function in a main schema then the trigger call the function
> and error occurs : "No function matches the given name and argument types.
> You might need to add explicit type casts."

You can either explicitly schema-qualify the function call, or make
sure that that main schema is always present in your search_path.

            regards, tom lane



How to use one function which can be accessed for all schemas

From
"Wetmore, Matthew (CTR)"
Date:

Schema qualify your function and trigger names.  Schema qualify everything, it’s good practice and doesn’t need to rely on search_path.

This error say exactly that.

 

CREATE FUNCTION test(…

 

CREATE FUNCTION myschema.test(

 

From: intmail01 <intmail01@gmail.com>
Sent: Tuesday, January 9, 2024 12:15 AM
To: pgsql-sql@lists.postgresql.org
Subject: [EXTERNAL] How to use one function which can be accessed for all schemas

 

Hi,

 

I have several schemas in my database, I want to create just one function to use with all these schema.

I create the function in a main schema then the trigger call the function and error occurs : "No function matches the given name and argument types. You might need to add explicit type casts."

 

How to use just one function which can  be work amongst all shemas in the db ?

My objective is to reduce update of functions code just once not for many schemas. I dont want to duplicate my functions for each schema.

 

Thanks

Re: How to use one function which can be accessed for all schemas

From
Bindra Bambharoliya
Date:
Create function in public or catalog schema. This function will be visible to each schema and user

On Tue, 9 Jan 2024, 22:10 Wetmore, Matthew (CTR), <Matthew.Wetmore@express-scripts.com> wrote:

Schema qualify your function and trigger names.  Schema qualify everything, it’s good practice and doesn’t need to rely on search_path.

This error say exactly that.

 

CREATE FUNCTION test(…

 

CREATE FUNCTION myschema.test(

 

From: intmail01 <intmail01@gmail.com>
Sent: Tuesday, January 9, 2024 12:15 AM
To: pgsql-sql@lists.postgresql.org
Subject: [EXTERNAL] How to use one function which can be accessed for all schemas

 

Hi,

 

I have several schemas in my database, I want to create just one function to use with all these schema.

I create the function in a main schema then the trigger call the function and error occurs : "No function matches the given name and argument types. You might need to add explicit type casts."

 

How to use just one function which can  be work amongst all shemas in the db ?

My objective is to reduce update of functions code just once not for many schemas. I dont want to duplicate my functions for each schema.

 

Thanks

Re: How to use one function which can be accessed for all schemas

From
"David G. Johnston"
Date:



On Tue, Jan 9, 2024, 11:09 Bindra Bambharoliya <bindra.bambharoliya@gmail.com> wrote:
Create function in public or catalog schema. This function will be visible to each schema and user

Schemas don't have their own visibility, you should not create stuff in pg_catalog, and public is not guaranteed to be in the search_path.


And, please do not top-post replies.

David J.