Parameter defaults for ALTER FUNCTION?
我正在尝试将我的一个oracle数据库迁移到Postgres 9.5。 我目前正在尝试创建下一个功能:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | -- Generated by Ora2Pg, the Oracle database Schema converter, version 18.1 -- Copyright 2000-2017 Gilles DAROLD. All rights reserved. -- DATASOURCE: dbi:Oracle:oralab SET client_encoding TO 'UTF8'; SET search_path = repdev,public,oracle,utl_file,extensions; SHOW search_path; CREATE OR REPLACE FUNCTION Bl_Create_Flat_File_Pg.set_charset (file_id utl_file.file_type, p_title text DEFAULT NULL) RETURNS VOID AS $body$ BEGIN ..... END; -- $body$ LANGUAGE PLPGSQL SECURITY DEFINER STABLE; ALTER FUNCTION Bl_Create_Flat_File_Pg.set_charset (file_id utl_file.file_type, p_title text DEFAULT NOT NULL ) OWNER TO repdev; |
但是当我在psql中运行它时,我发出下一个错误:
1
2 ERROR: syntax error at OR near"DEFAULT"
LINE 1: ...charset (file_id utl_file.file_type, p_title text DEFAULT NU...
对于
1 2 | ALTER FUNCTION Bl_Create_Flat_File_Pg.set_charset(file_id utl_file.file_type, p_title text) OWNER TO repdev; |
或更短:
1 2 | ALTER FUNCTION Bl_Create_Flat_File_Pg.set_charset(utl_file.file_type, text) OWNER TO repdev; |
如果比较CREATE FUNCTION语句的文档,即:
1 2 | CREATE [ OR REPLACE ] FUNCTION name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] ) |
到ALTER FUNCTION文档:
1 | ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |
你会注意到
如果您向我们展示的代码确实是由Ora2Pg生成的,那么您应该将此作为错误报告给Ora2Pg作者。