期限切れのユーザー アカウントが多数ある Oracle 11gR2 データベースを考えてみましょう。パスワードを変更せずに、すべてのユーザー アカウントを再度有効にしたいと考えています。
ALTER USER
アカウントを再度有効にするために実行できる SQL ステートメントの文字列を作成する SQL ステートメントを次に示します。
select listagg( cmds, ' ' ) within group ( order by rownum )
as cmd
from (
select
'alter user "' || d.username || '"' ||
' identified by values ''' || u.password || '''' ||
' account unlock;'
as
cmds
from
dba_users d, sys.user$ u
where
d.user_id = u.user#
);
このクエリの結果は、次のようなエントリを含む文字列です。
alter user "USERNAME" identified by values '1234567890ABCDEF' account unlock; ...
このクエリの結果を変数に格納してから呼び出す PL/SQL プロシージャを作成できると確信していますが、EXECUTE IMMEDIATE [var]
SQL 構文マジックを使用して、ステートメントEXECUTE IMMEDATE
によって作成された文字列を単純に実行することは可能ですか?SELECT