【发布时间】:2017-01-25 03:35:15
【问题描述】:
我在使用oracle表函数时遇到了一个奇怪的问题。
两种环境:本地和远程,代码相同,只是一些配置不同,它们共享同一个数据库。 oracle表函数在我的本地环境中可以完美运行,但是我只是尝试使用一个非常简单的表函数时远程出现错误。
create type V as table of varchar2(4000);
/
CREATE FUNCTION test2 RETURN v IS
BEGIN
RETURN v('a', 'b');
END test2;
/
我在plsql中使用 below 进行了测试,这里出现了无效标识符错误。
select * from table(Test2());
ORA-00904: : 无效标识符
标识符名称应该是错误消息的一部分也很奇怪,但它不存在。单独的查询可以在 plsql developer 中很好地工作。并且Test2函数如果不用于表函数,在本地和远程都可以很好地工作。
本地和远程的代码是一样的。只有 weblogic 配置、jdbc 驱动版本等可能不同。除了双方共享的数据库外,我无法访问远程环境。我试图在网上搜索问题,但没有找到答案。所以我希望这里的一些成员可以对这个问题有所了解。非常感谢任何帮助。
db 和 weblogic 版本:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
应用服务器 - Weblogic 10.3.3.0
ps:我发现有人在 community.oracle.com 上发布了一个类似的问题,但尚未解决。 https://community.oracle.com/thread/2503982
【问题讨论】:
-
感谢 Justin Cave 编辑我的帖子。
-
如果不能访问远程环境,怎么知道你的类型和函数创建成功了?您是否以远程环境中类型和功能的所有者身份登录?还是您需要完全限定名称?
-
@Justin Cave:本地和远程共享同一个数据库。因此,如果我对数据库进行更改,它将对两个环境都有影响。对困惑感到抱歉。我应该说我无法访问远程中的weblogic环境等。
-
@Justin Cave 1. 类型和函数创建成功。 2.我在本地和远程共享的db中以所有者身份登录,所以我认为它与权限无关。 3.名称无需限定,类型和功能在全局范围内供测试使用。