【发布时间】:2014-06-26 09:25:13
【问题描述】:
使用 PL/SQL 我创建了一个 util 函数:
create or replace function DOSOMETHING(article varchar) return varchar is ...
begin
...
end;
到目前为止,该功能运行良好。但仅适用于创建它的用户。我还有一个名为“read”的用户,他只能在数据库中读取。而且他当然不能创建函数,因为他有只读权限。问题是他看不到这个函数的存在:
SELECT * FROM ALL_OBJECTS WHERE (OBJECT_TYPE = 'FUNCTION')
>>> This <<< 似乎可以解决这个问题。所以我可以说“读取”可以将此函数用于选择语句等?正确的 ?这就是我想要的。我尝试了以下方法,但都没有奏效。我该怎么做或做不同的事情?
begin GRANT SELECT ON DOSOMETHING TO READ; end;
begin execute immediate('GRANT SELECT ON DOSOMETHING TO READ'); end;
第一个错误信息:
[ODBC driver for Oracle][Oracle]ORA-06550: line 1, column 7:
PLS-00103: Encountered the symbol "GRANT" when expecting one of the following:
begin declare exit for goto if loop mod null pragma raise
return select update while <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint set sql execute commit forall
<a single-quoted SQL string>
(Oracle 版本是 8i,旧的东西,以防万一)
【问题讨论】:
标签: sql oracle plsql privileges