【发布时间】:2017-07-07 22:25:17
【问题描述】:
我正在尝试将我的一个 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...
【问题讨论】:
-
如果你没有为最后一个参数指定默认值,它将默认为 null - 只需删除`DEFAULT NULL` - 它已经在你的情况下
-
提供的语句中没有明显的语法错误:test。它只是单个语句,还是某个更大脚本的一部分?
-
这不是真的 - 如果没有
DEFAULT NULL你有提供一个论据,你不必。这个错误令人惊讶(我本来期望schema "utl_file" does not exist)。这是您正在运行的修改或分叉的 PostgreSQL 吗? -
修改或分叉是什么意思?刚刚下载了官方的 postgresql 9.5 并从源文件安装它..
-
嗨,它是我尝试导入数据库的 .sql 转储文件的一部分。我没有包含正文,但正文包含一些 UTL_FILES.PUT_LINE 仅此而已。
标签: postgresql function plpgsql