الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كود يحظر المعرفات القديمة

بدأه Al-waleed في 15 يونيو 2014 · 1 رد · 491 مشاهدة · في قسم لغةالاجرائات Pl/sql
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

 

 

 

أخواني هذا الكود  بشكل عام يقوم بالبحث عن اليوزرات القديمة التي لم تدخل ثم يقوم بحظرها .

 

الكود يحتوي على العديد من المشاكل ، و لم أستطع حلها لكوني مبدئ في عالم الأوركل عموما و pl/sql خصوصا .

آملا من الله ثم منكم مساعدتي في انجازة .

 
 
CREATE OR REPLACE PROCEDURE a1 isuserX varchar2 (255);sqlStatment 
varchar2(2000);audit_value varchar2 (255) ;username_value varchar2 (255) 
;AUDIT_OPTION_value varchar2 (255) ;
cursor getuser 
is                
select username  from (select username, max(logoff_time) as 
logoff_time  from dba_audit_session where username not in ('SYSTEM' , 'SYS' 
,'OUTLN' , 'SCOTT' , 'ADAMS', 'JONES' ,'CLARK' , 'BLAKE' , 'HR ' ,'OE' , 
'AWR_STAGE' , 'CSMIG' , 'ANONYMOUS' ,'AURORA$ORB$UNAUTHENTICATED' ,'DBSNMP' , 
'DIP' ,'CTXSYS','DMSYS' ,'DSSYS' ,'EXFSYS' ,'LBACSYS','MDSYS' ,'ORACLE_OCM' , 
'ORDPLUGINS' ,'ORDSYS' , 'PERFSTAT' , 'TRACESVR', 'TSMSYS' , 'XDB' ) and 
ACTION_NAME='LOGOFF'      group by 
username)    where logoff_time< sysdate 
-30;BEGIN  select value into audit_value from V$PARAMETER 
where name ='audit_trail';    if (audit_value is null ) 
then    dbms_output.put_line('audit is not enable 
');    else    select 
USER_NAME,AUDIT_OPTION into username_value , AUDIT_OPTION_value from 
DBA_STMT_AUDIT_OPTS where USER_NAME is null and AUDIT_OPTION='CREATE SESSION' 
;    if (username_value is not null ) or  
(AUDIT_OPTION_value !='CREATE SESSION') 
then     dbms_output.put_line('create session is 
not 
config');    else    sqlStatment:='alter 
user' ||userX|| 'account lock ';    IF getuser %ISOPEN 
THEN      CLOSE getuser 
;       END 
IF;      open 
getuser;      fetch getuser into userX 
;      for i in getuser 
loop       execute immediate 
sqlStatment;      END 
LOOP;      close getuser;
        END IF 
;        END IF 
;      
END ;/
#2

علما أن المشكلة التي تظهر لي حاليًا هي :

 

*
ERROR at line 1:
ORA-06511: PL/SQL: cursor already open
ORA-06512: at "SYS.A1", line 9
ORA-06512: at "SYS.A1", line 27
ORA-06512: at line 1

مواضيع مشابهة