title: sqlalchemy concat with more than 2 elements on Oracle DB
body: <p>considering the following table definition</p>
  
  <pre><code>meta = MetaData()
  
  tgd = Table('T_GROUP_DAT', meta,
              Column('C_ID'),
              Column('CLASS_CODE'))
  
  </code></pre>
  
  <p>I create a select-statement using the <code>sqlalchemy.sql.functions.concat</code> with 3 statements</p>
  
  <pre><code>tgd_q1 = select([functions.concat(tgd.c.C_ID, '-', tgd.c.CLASS_CODE)])
  </code></pre>
  
  <p>using</p>
  
  <pre><code>tgd_q1.compile(dialect=OracleDialect(), compile_kwargs={"literal_binds": True}))
  </code></pre>
  
  <p>the query </p>
  
  <pre><code>SELECT concat("T_GROUP_DAT"."C_ID", "T_GROUP_DAT"."CLASS_CODE") AS concat_1
  FROM "T_GROUP_DAT"
  </code></pre>
  
  <p>is generated. However, when I run this, the exception <code>ORA-00909: invalid number of arguments</code> is thrown. This is because CONCAT (<a href="https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions026.htm" rel="nofollow noreferrer">https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions026.htm</a>) only allows 2 Arguments.</p>
  
  <p>My workaround for now ist to use concat inside of concat, which works</p>
  
  <pre><code>tgd_q1 = select([functions.concat(functions.concat(tgd.c.C_ID,'-'),tgd.c.CLASS_CODE)])
  </code></pre>
  
  <p>However, this makes the resulting sql-query far less readable. Is there a way to create a query using <code>|</code> oparator or to create a more readable sql query for this case using sqlalchemy</p>