ORA-06553: PLS-306: 调用 ‘OGC_X’ 时参数个数或类型错误
对于这个错误开始我也觉得挺纳闷,在他的Form中根本没有调用什么OGC_X的方法,只能一步一步分析看看到底发生什么事情了。
首先想到利用Help –> 的功能来查看真正执行的SQL语句是什么呢?
1 2 3 4 5 6 |
SELECT REF(x), ...... x.last_updated_by, x.last_update_date, x.last_update_login FROM xhu_po_quote_headers_2213_v x |
可是这句SQL看上去和OGC_X没有什么关系啊?难不成和x有关系,看似没什么道理可言?
那就利用数据字典来看看吧,到底OGC_X是何物,总是和这个SQL语句过意不去呢?
1 2 3 4 5 6 7 8 |
SQL> SELECT owner, object_name, object_type 2 FROM dba_objects 3 WHERE object_name = 'OGC_X'; OWNER OBJECT_NAME OBJECT_TYPE --------- -------------- -------------- PUBLIC OGC_X SYNONYM MDSYS OGC_X FUNCTION |
系统中果然存在OGC_X名称的FUNCTION,这样从上面的ORA-06553错误来看,果然这个SQL语句执行了这个FUNCTION,但是它为什么会被执行呢?再来看看OGC_X的定义 。
1 2 3 4 5 |
SQL> desc OGC_X; Parameter Type Mode Default? --------- -------------- ---- -------- (RESULT) NUMBER P MDSYS.ST_POINT IN |
再看看这个SQL语句, 难不成真的和x有关系?我就试一把将x改为其它的别名,就叫poh,执行修改后的SQL,果然没有错误,原来真的和别名x有关系,
那即使是别名x搞的鬼,那OGC_X和x会有关系吗,它们怎么就联系在一起了?想了一下,同义词可以将它们连在一起,说不定是这个原因。
1 2 3 4 5 6 7 8 |
SQL> SELECT owner, synonym_name, table_owner, table_name 2 FROM dba_synonyms 3 WHERE table_name = 'OGC_X'; OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME ---------- --------------- ------------- ------------- PUBLIC OGC_X MDSYS OGC_X PUBLIC X MDSYS OGC_X |
一看同义词的查询结果,答案果然找出来了,原来OGC_X创建了一个同义词名称为x,所以上面SQL中REF(x)中就被认为调用了OGC_X这个FUNCTION,而又没有提供给它调用的参数,所以报出调用的参数个数或类型错误。
这个问题的关键部分已经解决,可是进一步想,既然x有同义词,会不会也有名为y的同义词呢,来看看?
1 2 3 4 5 6 7 |
SQL> SELECT owner, synonym_name, table_owner, table_name 2 FROM dba_synonyms 3 WHERE synonym_name = 'Y' ; OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME --------- --------------- -------------- ------------ PUBLIC Y MDSYS OGC_Y |
系统中真有这样的同义词,Oracle为什么要这样呢,google一把吧,找到了Oracle官方的说法:
Oracle Spatial is conformant with Open Geospatial Consortium (OGC) Simple Features Specification 1.1.1 (Document 99-049), starting with Oracle Database release 10g(version 10.1.0.4). Conformance with the SQL92 with Geometry Types Implementation means that Oracle Spatial supports all the types, functions, and language constructs detailed in Section 3.2 of the specification. Synonyms are created to match all OGC function names except for X(p Point) and Y(p Point). For these functions, you must use the names OGC_X and OGC_Y instead of just X and Y.
上面的疑问都已经有了答案,可是Form生成的SQL语句怎么又多了一个别名X呢?答案就在Form数据块的设置上面,数据库的别名被设置为x了,要彻底解决这个只要去掉别名或者命名为其它不冲突的别名即可。
从这个问题可以看到,一些看似互不相关的问题实质是有其内在的联系,在程序的开发中没有妖怪的存在;同时一个好的命名会减少很多不必要的错误发生。
文章转自:http://oracleseeker.com/2009/08/15/raise_ora-06553_ogc_x_error_in_oracle_form/
–
相关推荐
python库。 资源全名:ogc_plugins_runner-1.0.5-py3-none-any.whl
OGC - ITIL v3 - Service Operation
OGC_Common_Glossary_English_v06_2008
OGC - ITIL v3 - Service Strategy
OGC - ITIL v3 - Service Lifecycle - Introduction ITIL
mapserver_ogc_web_services 用户webgis的开发
OGC - ITIL v3 - Continual Service Improvement
OGC - ITIL v3 - Service Design
OGC - ITIL V3 - The Official Introduction to ITIL.zip
介绍OGC组织的各种标准,包括SFS,WMS.WMTS,WMS,以及空间SQL模型等。是学GIS需要掌握的内容。
CityGML是一种开放数据模型,它基于XML来实现虚拟三维城市模型的数据存储与交换,它是GML 3的一种应用模式,GML 3是由OGC和ISO TC 211制订的可扩展的国际标准,可以用于空间数据交换。CityGML目标是成为一个开放的...
City Geography Markup Language (CityGML) En-coding Standard an OGC Member approved international standard
用java+postgis实现ogc定义的getmap功能
用于了解谷歌地球kml文档的标准构成规范,适合制作或通过前后端工具解析kml并转换为json等格式,毕竟谷歌地球已经完全不能用,替换或迁移只是时间问题
OGC标准,地理信息数据共享;OWS描述了Web服务通用的一些接口规范,包括请求和响应的内容、请求的参数和编码等。目前,OWS包括WFS、WMS、WCS。
gwp模型 docker run --rm --name edit-db -p 54321:5432 --hostname primary \ -e PG_DATABASE=edit -e PG_LOCALE=de_CH.UTF-8 -e PG_PRIMARY_PORT...-e PG_READ_USER=ogc_server -e PG_READ_PASSWORD=ogc_server \ sog
资源分类:Python库 所属语言:Python 资源全名:ogc-0.2.3-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
KML全称是Keyhole Markup Language KML,是一个基于XML语法和文件格式的文件,用来描述和保存地理信息如点、线、图片、折线并在Google Earth客户端之中显示, (KML以前的版本能够被Google Earth读取并保存为KML 2.0)...
ogc-api-features-leaflet 此处的实时示例: :