问答 查看内容
返回列表

Oracle 存储过程在 BI 里搜索不到,但数据库中确认存在是什么原因?

13 1
发表于 9 小时前 | 查看全部 阅读模式
在 BI 中通过 Oracle 数据账户创建存储过程数据集时,进入“选择存储过程”页面后,搜索某个自建存储过程名称无法搜到。

数据库中使用同一个账号查询,能确认该对象存在,并且对象类型为 PROCEDURE。例如:

```sql
select owner, object_name, object_type
from all_objects
where object_name = 'FA_******_AC';
```

返回结果中 OBJECT_TYPE 为:

```text
PROCEDURE
```

Oracle 数据账户连接信息中,用户名为对应业务账号,SID 为数据库实例/服务信息。

这种情况下 BI 搜不到存储过程,一般是什么原因?

评论1

观小程楼主Lv.1 发表于 9 小时前 | 查看全部
这种情况优先检查搜索关键字大小写。

原因是 Oracle 在未使用双引号创建对象时,会把对象名统一折叠为大写存储。例如创建时写的是:

```sql
create procedure fa_******_ac ...
```

Oracle 元数据中实际保存的对象名通常会是:

```text
FA_******_AC
```

BI 在 Oracle 存储过程选择列表中,会从 Oracle 元数据视图 ALL_PROCEDURES 获取当前账号可见的存储过程,并根据页面输入的关键字匹配过程名。当前搜索会按输入内容直接匹配元数据中的对象名,没有统一转大写处理,因此如果页面搜索时输入小写:

```text
fa_******_ac
```

就可能匹配不到;需要按照数据库元数据中实际保存的大小写搜索,例如:

```text
FA_******_AC
```

可以用当前 BI 数据账户执行下面 SQL 确认实际对象名:

```sql
select owner, object_name, procedure_name, object_type
from all_procedures
where upper(owner) = 'XINYANBI'
  and upper(object_name) = 'FA_******_AC';
```

如果返回的 OBJECT_NAME 是大写,则在 BI 页面中也使用大写对象名搜索。

另外,Oracle 数据账户中的 SID 不是 schema;schema 通常对应对象 owner 或登录用户名。若对象属于其他 schema,还需要确认当前连接账号对该过程有可见和执行权限。

本例最终确认是搜索大小写问题:使用大写过程名搜索后,BI 可以正常搜索到该存储过程。

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2026 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去回复 去发帖 返回顶部
快速回复 返回顶部 返回列表