Pol*_*pet 1 settings plsql reserved-words oracle-sqldeveloper
我想从我的函数中的某个网页获取HTML内容。我读过我可以用PLSQL中的UTL_HTML包来做到这一点。因此,我在项目中编写了以下代码:
v_webcontent := utl_http.request(v_weblink);
Run Code Online (Sandbox Code Playgroud)
在此先声明了v_webconent和v_weblink。在功能中运行此命令会导致PLSQL异常:PLS-00201: identifier 'UTL_HTTP' must be declared我想这个问题是因为该软件包不可用(来自此链接:相同的错误消息)。
我听从了建议。因此,我以SYSTEM角色的身份在sql developer中创建了一个新的数据库连接(SYS无法正常工作,它说我只能使用SYSDBA或SYSOPER登录,但两者都不会采用我在数据库中创建的标准密码)。然后,我在上面的链接中输入了代码。
GRANT EXECUTE ON SYS.UTL_HTTP TO [database];
Run Code Online (Sandbox Code Playgroud)
我创建的用户名为“数据库”。它首先给我一个没有[]方括号的错误。表格或视图不存在,因此我将其放在方括号中。现在它给出了错误:
Error starting at line : 1 in command -
GRANT EXECUTE ON SYS.UTL_HTTP TO [database]
Error report -
SQL Error: ORA-00987: missing or invalid username(s)
00987. 00000 - "missing or invalid username(s)"
*Cause:
*Action:
Run Code Online (Sandbox Code Playgroud)
所以我不知道如何解决这个问题。在上面的链接中,OP说他还有另一个错误,因此我还检查了我是否没有同样的问题。我进入了:
SELECT * FROM dba_objects WHERE object_name='UTL_HTTP'
Run Code Online (Sandbox Code Playgroud)
它返回了4个条目。与所有者:SYS,SYS,PUBLIC和APEX_040000。
有人可以帮我吗?我需要以SYS身份登录并且使用什么密码?
由于11g,您还必须创建一个访问控制列表('ACL'),该列表指定哪些用户可以访问特定域,因此仅授予用户对utl_http的执行权限已不再足够!
像这样的事情应该在11g中起作用(在将UTL_HTTP的执行特权授予您的数据库用户之后,由接受的答案指定):
SQL> BEGIN
2 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(acl=>'mikesacl.xml',
3 description=>'access control list example',
4 principal=>'HR',
5 is_grant=>TRUE,
6 privilege=>'connect');
7 commit;
8 end;
9 /
PL/SQL procedure successfully completed.
SQL> begin
2 DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
3 acl=>'mikesacl.xml',host=>'*');
4 commit;
5 end;
6 /
PL/SQL procedure successfully completed.
Run Code Online (Sandbox Code Playgroud)
这是一个非常有用的链接,它解释了以上两个函数的参数:
http://www.oracleflash.com/36/Oracle-11g-Access-Control-List-for-External-Network-Services.html
祝好运!
| 归档时间: |
|
| 查看次数: |
11732 次 |
| 最近记录: |