2014-12-19 195 views
0

我想在oracle中創建用戶,使用我現有的表調用EMPLOYEE,我想生成一個查詢來創建用戶名和用戶。用戶名在EMPLOYEE表中。Oracle查詢內部查詢

我想創建像下面

CREATE USER (SELECT first_name FROM employee where employee_id = '1') 
IDENTIFIED BY password .....so on 
+0

心靈更多的細節展開這樣的查詢?你有一個用戶表試圖從Employee表中填充?你嘗試過哪些SQL? – bowlturner

+0

是的。 EMPLOYEE表。它包括名字 – arun

+0

我已經嘗試了上面的代碼 – arun

回答

4

DBMS_UTILITY.EXEC_DDL_STATEMENT可以用來在運行PLSQL DDL語句,所以你可以試試下面的

BEGIN 
FOR c IN (select 'CREATE USER ' || first_name || ' ' || 'IDENTIFIED BY ' || 
       password_column ||' ' as rec 
      from employee where employee_id=1) LOOP 
    begin 
    dbms_utility.exec_ddl_statement(c.rec); 
    exception 
    when others then 
     dbms_output.enable; 
dbms_output.put_line ('failed for '||c.rec); 
dbms_output.put_line(sqlerrm); 
    end; 
    END LOOP; 
    END; 
+0

這將創建用戶基於first_name從僱員表 – psaraj12

+0

@ArunaDissanayake,嗨。你的問題是你不能在CREATE USER語句中使用子查詢。另一種方法是由psaraj12提出的方案,它包含動態創建和執行與您的表中的用戶一樣多的CREATE USER語句。但是爲了安全起見,我寧願將它們導出到控制檯,而不是直接執行它們,至少在您知道代碼正常工作之前是這樣。 – Sebas

+0

謝謝@ psaraj12 – arun