Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Процедура создания пользователя


Автор: Mewer 24.6.2008, 13:41
Код

CREATE OR REPLACE PROCEDURE NewUser(username VARCHAR2, pass varchar2)
IS


BEGIN

CREATE USER username IDENTIFIED BY pass ;
ALTER USER username QUOTA UNLIMITED ON users;

END NewUser;



что я делаю не так?

Автор: LSD 24.6.2008, 14:22
Такие вещи надо делать через динамический SQL. 

P.S. А вообще-то за подобные вещи DBA любят бить канделябрами smile 

Автор: Mewer 24.6.2008, 14:39
спасибо, попробую

Автор: Mewer 24.6.2008, 18:43
Попытался реализовать- ничего не получилось. 

Код

NU->SQL->Text="CREATE USER :User IDENTIFIED BY :Pass";
NU->Parameters->ParamByName("User")->Value=Edit1->Text;
NU->Parameters->ParamByName("Pass")->Value=Edit1->Text;


NU->ExecSQL();



Вообще, наверное, кто то же делал создание нового пользователя через Билдер, помогите пожалуйста.

Автор: Nuzur 25.6.2008, 10:07
Mewer, Ну вообще то насколько я понял то ув. LSD, имел ввиду
Код

EXECUTE IMMEDIATE 'CREATE USER MyUser IDENTIFIED BY MyPass'

И надо еще помнить что должны быть явно предоставлены права на это.

Но довести до Вашего сознания пытались то что это очень плохая практика, да и в Оракле она по сути нужна только в очень хитрых ситуациях...
Лучше расскажите более подробно задачу... ИМХО Вы что-то неправильно понимаете и соответственно пытаетесь это сделать не правильно.

Автор: LSD 25.6.2008, 12:08
Цитата(Nuzur @  25.6.2008,  11:07 Найти цитируемый пост)
Ну вообще то насколько я понял то ув. LSD, имел ввиду

Именно smile

Автор: DnS 23.7.2008, 21:52
Mewer, копать в сторону DBMS_SQL.
Создание пользователя, таблиц итд - это DDL операция, которую нельзя предкомпилировать в процедуру.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)