title: Truncate table privilege without stored procedures
body: <p>SYSTEM creates several tables, and would like to grant userA the ability to truncate tables. On oracle's docs, the minimum privilege is :</p>
  
  <pre><code>GRANT DROP ANY TABLE TO userA
  </code></pre>
  
  <p><a href="https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10007.htm#SQLRF01707" rel="nofollow noreferrer">https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10007.htm#SQLRF01707</a></p>
  
  <p>DROP ANY TABLE as stated is too powerful of a privilege to be granted to a user, and from looking around there is no way to limit the tables the user can truncate with it.</p>
  
  <p>The proper way as previous topics has touched on is to use stored procedures:</p>
  
  <pre><code>CREATE OR REPLACE procedure truncateTables
  AS
  BEGIN
  execute immediate 'TRUNCATE TABLE table1';
  end;
  /
  
  GRANT EXECUTE on system.truncateTables TO userA;
  </code></pre>
  
  <p>However, if I want to avoid using any stored procedures at all, is there an alternative way to allow a user that is not the table owner to truncate tables, but not with a privilege that is potentially destructive like "DROP ANY TABLE" ? </p>