ORA-00904 Invalid Identifier

hbuzzd 2009-07-10 10:24:06
请教各位,我在创建视图的时候报错。(以前运行这句代码都没错误的)

create or replace view svf_nat_a as
select t.o_name_cn,o_py,o_name_py o_cut_py,pinyin_to_flp(o_name_py) flp
from svf_nat_0 t
where o_name_cn<>o_py ;

提示错误:ora-00904 " pinyin_to_flp" :invalid identifier;

该怎么解决?谢谢!
...全文
23886 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rockywu 2009-07-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 inthirties 的回复:]
按你这个描述的话。pinyin_to_flp应该不是你当前用户W08_Reship 创建的吧,

对于别的用户创建的对象,这里function也是一种对象,你需要用创建对象的用户名加function名来访问,比如如果是A用户创建的。A.pinyin_to_flp()来使用该function,并且需要先把权限给你。通过A用户执行grant execute on pinyin_to_flp to W08_Reship;来grant权限。

如何确定是那个用户创建的叻,可以用5楼提供的sql,就是把objecct_name这里的过…
[/Quote]
LZ主是没有权限而已,在建立pinyin_to_flp的账号对W08_Reship,
在访问时加上建立账号名user.object形式,即7楼所说
这是由于不同用户模式(schema)访问造成的...
inthirties 2009-07-10
  • 打赏
  • 举报
回复
按你这个描述的话。pinyin_to_flp应该不是你当前用户W08_Reship 创建的吧,

对于别的用户创建的对象,这里function也是一种对象,你需要用创建对象的用户名加function名来访问,比如如果是A用户创建的。A.pinyin_to_flp()来使用该function,并且需要先把权限给你。通过A用户执行grant execute on pinyin_to_flp to W08_Reship;来grant权限。

如何确定是那个用户创建的叻,可以用5楼提供的sql,就是把objecct_name这里的过滤的 变量值,改成 pinyin_to_flp;
hbuzzd 2009-07-10
  • 打赏
  • 举报
回复
to 枫の叶 :
这个权限指的是数据库用户的权限吗,如果是那用该不是这个问题,因为我用相同的脚本创建了其他的用户,却可以使用该函数。
如果是需要加owner 那为什么其他的用户创建的时候后不需要加owner 前缀 呢?

问题产生的原因我查了一下,会不会因为我创建了一个 W08_Reship 的数据库用户。后来因为其他原因我先删除了该用户,使用的级联删除。而后我创建了相同名字的W08_Reship用户。在新创建的这个用户下,该函数就不能使用了。我曾经尝试重启了系统和数据库,都不能解决该问题,那也证明应该不会是个用户共享的缓冲池混乱了。那真正的原因是什么呢?谢谢!
mantisXF 2009-07-10
  • 打赏
  • 举报
回复
-- 用下面语句在你的SCHEMA用户下跑一下看有结果没:
-- 1。如果没有一条记录返回,那你就没有权限访问这个函数或者这个函数在某一个PACKAGE里面
-- 2。如果有记录返回,那就说明函数在你的“眼皮”下,那用的时候最好加上OWNER前缀,如果还不行,那可能就没有EXECUTE权限罗
e.g: SQL> SELECT OWNER,
2 OBJECT_NAME,
3 SUBOBJECT_NAME,
4 OBJECT_TYPE
5 FROM ALL_OBJECTS
6 WHERE OBJECT_TYPE = UPPER('FUNCTION')
7 AND OBJECT_NAME = UPPER('GET_CLOB_FROM_XML');

OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_TYPE
------------------------------ ------------------------------ ------------------------------ -------------------
SCOTT GET_CLOB_FROM_XML FUNCTION
[Quote=引用楼主 hbuzzd 的帖子:]
请教各位,我在创建视图的时候报错。(以前运行这句代码都没错误的)

create or replace view svf_nat_a as
select t.o_name_cn,o_py,o_name_py o_cut_py,pinyin_to_flp(o_name_py) flp
from svf_nat_0 t
where o_name_cn <>o_py ;

提示错误:ora-00904 " pinyin_to_flp" :invalid identifier;

该怎么解决?谢谢!
[/Quote]
hbuzzd 2009-07-10
  • 打赏
  • 举报
回复
那要怎么查看是否存在这个函数?
脚本是别人写的。
qzn2008 2009-07-10
  • 打赏
  • 举报
回复
pinyin_to_flp(o_name_py) 你这是调用了函数,查查pinyin_to_flp() 这个函数是不是被修改了。
提示错误: " pinyin_to_flp" 这个标示符 不可用。 有这个函数吗?
lzj033 2009-07-10
  • 打赏
  • 举报
回复
pinyin_to_flp,函数名无效
cosio 2009-07-10
  • 打赏
  • 举报
回复
ORA-00904 string: invalid identifier

Cause: The column name entered is either missing or invalid.

Action: Enter a valid column name. A valid column name must begin with a letter, be less than or equal to 30 characters, and consist of only alphanumeric characters and the special characters $, _, and #. If it contains other characters, then it must be enclosed in double quotation marks. It may not be a reserved word.

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧