2016-10-23 3 views
0

저는 PL/SQL 코딩에있어 초보자입니다. PL/SQL을 사용하여 간단한 관리 작업을 수행하려고합니다. 누군가 내가 잘못하고있는 것을 지적 할 수 있습니까?이스케이프 처리 '.' PL/SQL에서 변수 사용하기

prompt Enter a value for the Schema that you just refreshed: 
define owner=&1 

BEGIN 
    FOR x_rec IN (
     SELECT table_name FROM dba_tables WHERE owner='&&owner' 
    ) 
    LOOP 
     EXECUTE IMMEDIATE ''GRANT SELECT ON ' ||&&owner|| '.''||x_rec.table_name||'' to ' ||&&owner|| '_RO_ROLE''; 
    END LOOP; 
END; 
+1

있습니까? –

답변

1

당신은 너무 많은 따옴표가, 한가지 :

여기 내 코드입니다. SQL * Plus는 '.'을 사용하여 선택적으로 대체 변수를 종료합니다. 실제 도트를 원하면 두 개를 사용하십시오.

이 시도 :이 코드에 문제가

accept owner char prompt "Enter the name of the schema that you have just refreshed: " 

begin 
    for r in (
     select table_name from dba_tables where owner = upper('&&owner') 
    ) 
    loop 
     dbms_output.put_line('grant select on &&owner..' || r.table_name || ' to &&owner._ro_role'); 
     execute immediate 'grant select on &&owner..' || r.table_name || ' to &&owner._ro_role'; 
    end loop; 
end; 
/
+0

매력처럼 작동합니다! 당신의 도움을 주셔서 감사합니다. – antjb12