DECLARE
BEGIN
FOR s IN (SELECT first_name
FROM EA_marketing_table
WHERE town = 'LONDON'
)
LOOP
EXECUTE IMMEDIATE 'CREATE USER ' ||(s.first_name)|| ' IDENTIFIED BY LOL';
dbms_output.put_line (s.first_name || ' IDENTIFIED BY LOL');
END LOOP;
END;
/
Я пытаюсь создать пользователя, а приведенный выше код позволяет мне создать пользователя, но когда я пытаюсь создать процедуру, он не будет работать.Процедура создания, но не работает
Это новый код
CREATE OR REPLACE PROCEDURE proc_it_development AS
first_name VARCHAR2 (25);
BEGIN
FOR r IN (SELECT first_name
FROM EA_marketing_table
WHERE town = 'lONDON ')
LOOP
EXECUTE IMMEDIATE 'CREATE USER '||(r.first_name)|| ' IDENTIFIED BY POOP ';
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN dbms_output.put_line ('r SELECT...INTO did not return any row.');
END;
/
любая помощь, пожалуйста?
:)
Добро пожаловать в StackOverflow: если вы отправляете код, XML или образцы данных, ** пожалуйста ** выделите эти строки в текстовом редакторе и нажмите кнопку «образцы кода» ('{}') на панели инструментов редактора, чтобы приятно формат и синтаксис выделить его! –
Пароли чувствительны к регистру по умолчанию от 11 г, поэтому убедитесь, что вы используете именно правильное значение. Но какой пароль вы используете - один из анонимного блока или один из процедуры? Вы бросили пользователей между ними? (Я собирался спросить, есть ли у вас «serveroutput», когда вы выполняете процедуру, поэтому любые ошибки будут отображаться, но вы не сможете получить «no_data_found» в любом случае, и все остальное (например, уже существующий пользователь) приведет к прерыванию proc). Какая ошибка возникает при попытке войти в систему - ORA-01017, ORA-01045, что-то еще? –
(1) Ваш новый код просто создает процедуру, но на самом деле он не запускает * его. Вам нужно запустить его, например. с 'exec proc_it_development;'. (2) у вас есть обработчик исключений для NO_DATA_FOUND, но ваша процедура никогда не вызовет этого исключения. (3) Убедитесь, что вы проверяете, что есть некоторые строки, возвращаемые запросом - т. Е. Город действительно написал 'lONDON'? По умолчанию сравнение строк зависит от регистра. –