2014-12-19 5 views
0

기존 테이블 호출 직원을 사용하여 Oracle에서 사용자를 만들고 싶습니다. 사용자 이름을 가진 사용자를 생성하는 쿼리를 생성하고 싶습니다. 사용자 이름이 EMPLOYEE 테이블에 있습니다.Oracle - 쿼리 내 쿼리

나는 DBMS_UTILITY.EXEC_DDL_STATEMENT이 더 많은 세부 사항이 확대

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

마음 아래에 시도 할 수 있도록 PLSQL에서 DDL 문을 실행할 수 있습니다

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

+0

예. EMPLOYEE 테이블. 그것은 first_name을 포함합니다 – arun

+0

위의 코드를 시도했습니다 – arun

답변

4

아래 같은 쿼리를 만들려면? Employee 테이블에서 채우려는 User 테이블이 있습니까? 어떤 SQL을 사용해 보셨습니까?
+0

이것은 직원 테이블에서 first_name을 기반으로 사용자를 생성합니다 – psaraj12

+0

@ArunaDissanayake, 안녕하세요. 문제는 CREATE USER 문에서 하위 쿼리를 사용할 수 없다는 것입니다. psaraj12가 제안한 대안은 테이블에 사용자가있는 것처럼 CREATE USER 문을 동적으로 생성하고 실행하는 것입니다. 그러나 안전을 위해서 적어도 코드가 의도 한대로 작동 할 때까지 즉시 실행하는 것보다는 콘솔로 내보내는 것이 좋습니다. – Sebas

+0

@ psaraj12 감사합니다. – arun