Oracle
 sql >> Database >  >> RDS >> Oracle

Come posso costruire condizionalmente un nome di tabella per un'istruzione SQL CREATE TABLE?

In Oracle la sintassi sarebbe qualcosa di simile a

BEGIN
  EXECUTE IMMEDIATE 'CREATE TABLE CUSTOMER_'||v_company_id||' (..)';
END;

Tuttavia questa è probabilmente una pessima idea. Sei mesi dopo, vorrai aggiungere una colonna alla tabella e dovrai capire a quali tabelle aggiungerla.

Inoltre, le stored procedure in Oracle richiedono un nome di tabella fisso (di una tabella esistente) o dovresti fare riferimento a tutto tramite SQL dinamico, il che è un problema.

È meglio avere una singola tabella cliente con company_id come attributo. Quindi usa Controllo di accesso granulare fine per filtrare in modo sicuro su company_id per controllare chi vede e quali dati dell'azienda.