[英]ORA-00904 when executing package from SELECT
尝试设置特定的安全测试用例。 这个想法是创建一个可以使用select语句从PL / SQL调用的程序包。 该程序包可以工作并创建表,但是当我在Oracle SQL Developer中SELECT evil_pkg.CreateTab() FROM DUAL
运行SELECT evil_pkg.CreateTab() FROM DUAL
,我得到了
ORA-00904:“ EVIL_PKG”。“ CREATETAB”:无效的标识符00904。00000-“%s:无效的标识符” *原因:
*操作:在线错误:41列:8
有什么办法可以做到吗? 这里的目的是以这种特定方式执行程序包,而不仅仅是执行程序包。
这是包裹:
--Specification
CREATE OR REPLACE PACKAGE evil_pkg AS
PROCEDURE CreateTab;
END evil_pkg;
/
--Body
CREATE OR REPLACE PACKAGE BODY evil_pkg AS
PROCEDURE CreateTab
AS
BEGIN
execute immediate 'CREATE TABLE my_evil_table (id number) ';
COMMIT ;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
ROLLBACK;
RAISE;
END CreateTab;
END evil_pkg;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.