ALTER FUNCTION 的参数默认值?
Parameter defaults for ALTER FUNCTION?
我正在尝试将我的一个 oracle 数据库迁移到 Postgres 9.5。我目前正在尝试创建下一个函数:
-- 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 中 运行 时出现下一个错误:
ERROR: syntax error at or near "DEFAULT"
LINE 1: ...charset (file_id utl_file.file_type, p_title text DEFAULT NU...
对于ALTER FUNCTION
只需要重复参数定义即可(实际上只需要参数types),不是 参数的 default
子句:
ALTER FUNCTION Bl_Create_Flat_File_Pg.set_charset(file_id utl_file.file_type, p_title text)
OWNER TO repdev;
或更短:
ALTER FUNCTION Bl_Create_Flat_File_Pg.set_charset(utl_file.file_type, text)
OWNER TO repdev;
如果对照CREATE FUNCTION语句的文档,就是:
CREATE [ OR REPLACE ] FUNCTION
name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
到 ALTER FUNCTION 文档:
ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
您会注意到 ALTER FUNCTION
不允许使用 DEFAULT
子句。
如果您向我们展示的代码确实是由 Ora2Pg 生成的,那么您应该将其作为错误报告给 Ora2Pg 作者。
我正在尝试将我的一个 oracle 数据库迁移到 Postgres 9.5。我目前正在尝试创建下一个函数:
-- 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 中 运行 时出现下一个错误:
ERROR: syntax error at or near "DEFAULT" LINE 1: ...charset (file_id utl_file.file_type, p_title text DEFAULT NU...
对于ALTER FUNCTION
只需要重复参数定义即可(实际上只需要参数types),不是 参数的 default
子句:
ALTER FUNCTION Bl_Create_Flat_File_Pg.set_charset(file_id utl_file.file_type, p_title text)
OWNER TO repdev;
或更短:
ALTER FUNCTION Bl_Create_Flat_File_Pg.set_charset(utl_file.file_type, text)
OWNER TO repdev;
如果对照CREATE FUNCTION语句的文档,就是:
CREATE [ OR REPLACE ] FUNCTION
name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
到 ALTER FUNCTION 文档:
ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
您会注意到 ALTER FUNCTION
不允许使用 DEFAULT
子句。
如果您向我们展示的代码确实是由 Ora2Pg 生成的,那么您应该将其作为错误报告给 Ora2Pg 作者。