在if语句中嵌套alter系统

时间:2016-02-23 00:47:37

标签: sql oracle

我正在尝试为我的组织自动设置限制模式和取消设置限制模式。以下代码是我的尝试:

DECLARE
v_sess VARCHAR2(20);
BEGIN
SELECT LOGINS
INTO v_sess
FROM $V_INSTANCE;
IF UPPER(v_sess) = 'RESTRICTED' THEN
ALTER SYSTEM DISABLE RESTRICTED SESSION;
END IF;
END;

但我收到以下错误:

  

第8行的错误:ORA-06550:第8行第1列:PLS-00103:遇到   期待以下之一时符号“ALTER”:(开始案例   如果loop mod null pragma raise return select,则声明为goto退出   使用<<进行更新继续关闭当前   delete fetch lock insert open rollback savepoint set sql execute   提交forall合并管道清除

请帮我理解我哪里出错了。如果这是不可能的话那么我很容易解决这个问题。 :)

2 个答案:

答案 0 :(得分:2)

如果不评论你想要做的事情的智慧,试试这个:

EXECUTE IMMEDIATE 'ALTER SYSTEM DISABLE RESTRICTED SESSION';

答案 1 :(得分:0)

有一个外部sql文件来更改限制模式。由于各种原因数据库受到限制,不建议在pl / sql中更改数据库。

创建一个包含alter语句的sql文件,并通过sqlplus调用它。如果需要安排,请使用cron作业或将其链接到将其带入限制模式的事件。