注册

通过dblink调用oracle包函数

小灰灰_oO 2024/02/07 644 1

oracle定义了一个包

CREATE OR REPLACE PACKAGE "HMCS"."MY_PACKAGE1" AS /* TODO enter package declarations (types, exceptions, methods etc) here */ FUNCTION t1(a int,b int) return int; END; CREATE OR REPLACE PACKAGE BODY "HMCS"."MY_PACKAGE1" AS FUNCTION t1(a int,b int) return int as BEGIN return a+b; end t1; END;

达梦通过dblink调用

select MY_PACKAGE1.T1@ct_link(2,2); --成功 select MY_PACKAGE1.T1@ct_link(a => 2,b =>2); --失败 Call parameters incompatible or mismatch for [T1]

我需要第二种方案,能指明给哪个参数进行传参。
要怎么写?

第二个问题兼容性问题,在一个包体里面,我需要定义两个同名函数,入参类型也一样,区别只是参数名称有区别。oracle可以实现这个功能

需求就是这样,不能改名。

CREATE OR REPLACE PACKAGE "HMCS"."MY_PACKAGE1" AS /* TODO enter package declarations (types, exceptions, methods etc) here */ FUNCTION t1(a int,b int) return int; FUNCTION t1(c int,d int) return int; END; CREATE OR REPLACE PACKAGE BODY "HMCS"."MY_PACKAGE1" AS FUNCTION t1(a int,b int) return int as BEGIN return a+b; end t1; FUNCTION t1(c int,d int) return int as BEGIN return c-d; end t1; END;

oracle的调用:

select MY_PACKAGE1.t1(a => 1,b => 3) from dual; -- 结果4 select MY_PACKAGE1.t1(c => 5,d => 3) from dual; -- 结果2

达梦现在不允许包体里面定义上面这样的同名参数,会报错,所以我现在这部分代码迁移失败。

回答 0
暂无回答
扫一扫
联系客服