2016-10-23 1 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は、 '.'を使用して、オプションで置換変数を終了します。実際のドットも必要ならば、2つだけ使用してください。

はこれを試してみてください:

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

関連する問題