Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures 打开光标时表或视图不存在?_Stored Procedures_Oracle11g_Cursor - Fatal编程技术网

Stored procedures 打开光标时表或视图不存在?

Stored procedures 打开光标时表或视图不存在?,stored-procedures,oracle11g,cursor,Stored Procedures,Oracle11g,Cursor,我有一个程序来识别每个被锁定的 由于无效登录尝试而被锁定的帐户。但是,sp创建时出现编译错误:“ORA-00942:表不存在”。如果我自己运行select语句,它可以正常工作,但在sp内。有人能帮忙吗 Create or replace PROCEDURE IdentifyLockedAccounts(p_recordset OUT SYS_REFCURSOR) AS BEGIN OPEN p_recordset FOR SELECT USERNAME FROM DBA_USERS WHERE

我有一个程序来识别每个被锁定的 由于无效登录尝试而被锁定的帐户。但是,sp创建时出现编译错误:“ORA-00942:表不存在”。如果我自己运行select语句,它可以正常工作,但在sp内。有人能帮忙吗

Create or replace PROCEDURE IdentifyLockedAccounts(p_recordset OUT SYS_REFCURSOR) AS
BEGIN
OPEN p_recordset FOR SELECT USERNAME FROM DBA_USERS WHERE ACCOUNT_STATUS = 'LOCKED' OR ACCOUNT_STATUS = 'LOCKED(TIMED)';
END IdentifyLockedAccounts;
/

您的模式可能通过某个角色对DBA\U用户具有SELECT权限(例如SELECT\U CATALOG\U角色)——这就是您能够通过SQL客户机运行它的原因

在编译plsql/视图的过程中不启用角色,因此您必须将SELECT ON DBA_用户直接授予模式,以便能够在存储过程中使用它

GRANT SELECT ON DBA_USERS to YOURSCHEMA;