Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql PLS-00306:错误数量或类型的参数提示关于带“的函数”;变量";参数数_Sql_Oracle_Oracle11g_Gis - Fatal编程技术网

Sql PLS-00306:错误数量或类型的参数提示关于带“的函数”;变量";参数数

Sql PLS-00306:错误数量或类型的参数提示关于带“的函数”;变量";参数数,sql,oracle,oracle11g,gis,Sql,Oracle,Oracle11g,Gis,该函数来自外部库,我无法访问其源代码,但以下是其文档: 它声称有两个函数,但签名相同,但Oracle在标题中给了我一个错误(我假设是错误的),不允许我编译该函数 有没有办法跳过这个错误,让它编译下面的函数?因为我假设执行时不会出现这个错误 还是我真的错过了什么 功能: create or replace function transform_to_utm_sul_x(fuso varchar,shape st_geometry) RETURN number AUTHID CURRENT_USE

该函数来自外部库,我无法访问其源代码,但以下是其文档:

它声称有两个函数,但签名相同,但Oracle在标题中给了我一个错误(我假设是错误的),不允许我编译该函数

有没有办法跳过这个错误,让它编译下面的函数?因为我假设执行时不会出现这个错误

还是我真的错过了什么

功能:

create or replace function transform_to_utm_sul_x(fuso varchar,shape st_geometry)
RETURN number 
AUTHID CURRENT_USER
AS
    utm_x  number;
    srid INTEGER;
begin
    SELECT
        wkid_sul
    INTO
        srid
    FROM
        limt_fusos_utm
    WHERE
        zone = fuso and srid is not null and srid <> '';
    utm_x := st_x(st_transform(shape, srid));
    return utm_x;
end transform_to_utm_sul_x;
创建或替换函数转换(fuso varchar,shape st_几何体)
返回号码
AUTHID当前用户
作为
utm_x编号;
srid整数;
开始
挑选
南西九龙
进入
srid
从…起
limt_fusos_utm
哪里
zone=fuso,srid不为null,srid为“”;
utm_x:=st_x(st_变换(形状,srid));
返回utm_x;
结束变换到sul;
堆栈跟踪:

错误(16,47):PLS-00306:调用中参数提示的数目或类型错误 “ST_TRANSFORM_F”


使用形状为st_几何体和srid为整数的形状调用st_变换。 甲骨文公司表示,ST_变换F没有与类型(ST_几何体、整数)匹配的定义。或者更准确地说,Oracle无法将实际类型(st_几何体、整数)的参数转换为st_TRANSFORM_F的任何现有定义

快速演示

SQL> create or replace function ST_TRANSFORM_F(i in integer) return integer
  2  as begin return 1; end;
  3  /

Function created.

SQL> create or replace function f(p in sys.odcinumberlist) return integer as
  2  begin return ST_TRANSFORM_F(p); end;
  3  /

Warning: Function created with compilation errors.

SQL> sho err
Errors for FUNCTION F:

LINE/COL ERROR
-------- -----------------------------------------------------------------
2/7      PL/SQL: Statement ignored
2/14     PLS-00306: wrong number or types of arguments in call to
         'ST_TRANSFORM_F'

SQL> create or replace function f(p in number) return integer as
  2  begin return ST_TRANSFORM_F(p); end;
  3  /

Function created.

例如,数字可以转换为整数,但sys.odcinumberlist不能。

您能提供错误消息和错误行吗?@TedFilippidis编辑了它。我唯一能做的事情是,您向ST_TRANSFORM_F提供了错误类型的数据类型,您能提供签名吗?是数据类型,ST_几何体,在您试图编译此函数的模式中定义?@PatrickBacon这是一个问题,感谢这是一个问题,另一个问题是它是SDE.st_几何体