Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment puis-je construire conditionnellement un nom de table pour une instruction SQL CREATE TABLE ?

Dans Oracle, la syntaxe serait quelque chose comme

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

Cependant, c'est probablement une très mauvaise idée. Six mois plus tard, vous voudrez ajouter une colonne à la table et vous devrez déterminer à quelles tables vous devez l'ajouter.

De plus, les procédures stockées dans Oracle ont besoin d'un nom de table fixe (d'une table existante) ou vous devrez tout référencer via SQL dynamique, ce qui est pénible.

Mieux vaut avoir une seule table client avec le company_id comme attribut. Ensuite, utilisez Contrôle d'accès précis pour filtrer en toute sécurité sur le company_id pour contrôler qui voit les données de quelle entreprise.