下面的语句作用是查找LIMIT不为90的,然后将概要文件名PROFILE赋值给变量,然后利用ALTER将该变量对应的PROFILE记录修改LIMIT为90,直到符合条件全部记录修改完成。但执行时,提示“概要文件VA不存在”,请问怎样处理?谢谢!!!DECLARE va VARCHAR(100); lp NUMBER;
BEGIN
lp := 1;
WHILE lp > 0 LOOP
SELECT profile INTO va FROM dba_profiles WHERE resource_name = UPPER('password_life_time') AND limit != 90 AND ROWNUM < 2;
EXECUTE IMMEDIATE 'ALTER PROFILE va LIMIT PASSWORD_LIFE_TIME 90';
SELECT COUNT(*) INTO va FROM dba_profiles WHERE resource_name = UPPER('password_life_time') AND limit != 90;
END LOOP;
END;
BEGIN
lp := 1;
WHILE lp > 0 LOOP
SELECT profile INTO va FROM dba_profiles WHERE resource_name = UPPER('password_life_time') AND limit != 90 AND ROWNUM < 2;
EXECUTE IMMEDIATE 'ALTER PROFILE va LIMIT PASSWORD_LIFE_TIME 90';
SELECT COUNT(*) INTO va FROM dba_profiles WHERE resource_name = UPPER('password_life_time') AND limit != 90;
END LOOP;
END;
va VARCHAR(100);
lp NUMBER;
BEGIN
lp := 1;
WHILE lp > 0 LOOP
--LIMIT字段为VARCHAR2
SELECT profile
INTO va
FROM dba_profiles
WHERE resource_name = UPPER('password_life_time')
AND LIMIT != '90'
AND ROWNUM < 2;
EXECUTE IMMEDIATE 'ALTER PROFILE ' || va ||
' LIMIT PASSWORD_LIFE_TIME 90';
SELECT COUNT(*)
INTO lp
FROM dba_profiles
WHERE resource_name = UPPER('password_life_time')
AND LIMIT != '90';
END LOOP;
END;
/
BEGIN
FOR c IN (SELECT profile
FROM dba_profiles
WHERE resource_name = UPPER('password_life_time')
AND LIMIT != '90') LOOP
EXECUTE IMMEDIATE 'ALTER PROFILE ' || c.profile ||
' LIMIT PASSWORD_LIFE_TIME 90';
END LOOP;
END;
/