>The solution is the same whether you upgrade or not: you need >to adjust your search_path to include the "oracle" schema, >or else explicitly qualify references to orafce functions.
Thank you very much for your help.
To use the to_date functions of Orafce 3.0.1, we created the following to_date function in the public schema of the old database.
-----
CREATE OR REPLACE FUNCTION to_date(str text) RETURNS date AS $$ SELECT $1::date; $$ LANGUAGE sql IMMUTABLE STRICT; COMMENT ON FUNCTION public.to_date(text) IS 'Convert string to date';
-----
To avoid using a to_date function with the same name and parameter in the pg_catalog schema first, the search_path of the old database is set as follows:
"$user", public, pg_catalog
Make sure that public is searched before pg_catalog.
After the database is upgraded, in order to solve the changes in Oracle 3.24, we have added oracle schema to the search_path, as shown below:
"$user", public, oracle, pg_catalog
The following error occurred when I ran my application.
42P13:ERROR:42P13: return type mismatch in function declared to return pg_catalog.date
When I put the oracle schema at the end of the search_path, the problem was solved.
The search_path settings without problems are as follows:
"$user", public, pg_catalog, oracle
Why does it report an error when i put oracle between public and pg_catalog?
At 2023-04-20 01:18:15, "Tom Lane" <tgl@xxxxxxxxxxxxx> wrote: >gzh <gzhcoder@xxxxxxx> writes: >> Thank you for your prompt reply. >> Is there another solution if the database is not upgraded to 12.14? > >The solution is the same whether you upgrade or not: you need >to adjust your search_path to include the "oracle" schema, >or else explicitly qualify references to orafce functions. > > regards, tom lane