Обсуждение: Create or Update Function

Поиск
Список
Период
Сортировка

Create or Update Function

От
Steve Erickson
Дата:

I’ve got a script to update the schema on a number of servers.  These servers are at various versions of the schema, so I used the following syntax for each function, not knowing if it needed to be created or merely updated:

 

CREATE OR REPLACE FUNCTION foo() …

 

But I get the error, “function foo() does not exist” if it indeed does not exist.  Shouldn’t the “create or replace” just create it in this instance?  Why the error?

 

Thanks,

 

Steve Erickson

Senior Developer

266 East 7th Street, Floor 4

Saint Paul, MN 55101

651.925.3237 office

612.242.1343 cell

 

NOTICE:  This email, including any attachments, is covered by the Electronic Communications Privacy Act, is confidential and may be legally privileged.  If you are not the intended recipient, you are hereby notified that any retention, dissemination, distribution or copying of this communication is strictly prohibited.  If you have received this communication in error, please immediately notify our office by return email or at our telephone number (651) 925-3200.  Then delete and destroy all copies of this email and any attachments.

 

Thank you.

 

Re: Create or Update Function

От
Craig Ringer
Дата:
On 07/10/2012 04:28 AM, Steve Erickson wrote:

I’ve got a script to update the schema on a number of servers.  These servers are at various versions of the schema, so I used the following syntax for each function, not knowing if it needed to be created or merely updated:

 

CREATE OR REPLACE FUNCTION foo() …

 

But I get the error, “function foo() does not exist” if it indeed does not exist.  Shouldn’t the “create or replace” just create it in this instance?  Why the error?


I think you need to show us the full conversation with the server. I suspect the CREATE OR REPLACE is failing because of bad function syntax or similar, so a following invocation of the function is causing your function foo() does not exist error.

--
Craig Ringer