2009-11-03 4 views

Répondre

8

Parce que cela ne fonctionne pas dans Oracle! Vous pouvez déclarer toutes les colonnes comme VARCHAR2 (4000) si vous le souhaitez, mais il n'est pas recommandé par tous les moyens. Il n'y aura pas de différence dans le stockage ou la performance de la base de données, mais:

  • vous perdez une contrainte sur les valeurs sensibles qui peuvent être stockés dans la colonne
  • certaines applications client allouer 4000 octets de mémoire pour recevoir les données de la colonne quand (disons) 10 est tout ce qu'il contiendra jamais.
+1

Non seulement les applications client, mais aussi PL/SQL. En outre, vous souhaitez examiner ce qui se passe lorsque vous souhaitez concaténer deux colonnes ensemble (par exemple pour formater une ligne d'adresse pour une enveloppe). –

+0

@ Tony Andrews, Pourriez-vous fournir des exemples du type d'applications client qui le feront? – JohnOsborne

+0

@CodeFlava Non, je ne peux pas –

6

Probablement parce que Oracle ne prend pas en charge VARCHAR(MAX).

VARCHAR ne doit pas être utilisé du tout Oracle.

Pour l'instant, c'est un synonyme de VARCHAR2, mais il peut changer à l'avenir afin qu'il fasse la distinction entre une chaîne vide et un NULL.

VARCHAR est censé le faire, mais ne le fait pas dans les versions actuelles de Oracle, et ne devrait donc pas être utilisé.

En Oracle, la longueur maximale d'un VARCHAR2 est 4000 dans SQL et 32767 dans PL/SQL.

Pour des valeurs supérieures, vous devez utiliser CLOB, mais c'est très différent d'un VARCHAR2. Vous devez utiliser des méthodes spéciales pour y accéder, etc.

+0

Depuis VARCHAR est ANSI SQL92 standart et VARCHAR2 n'est pas , Je ne suis pas d'accord "VARCHAR ne devrait pas être utilisé dans Oracle du tout." et "... mais cela pourrait changer dans les déclarations futures ...". –

+0

@eyazici: De la documentation: http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/datatype.htm#sthref3784 * Pour éviter d'éventuels changements de comportement, utilisez toujours le type de données 'VARCHAR2' pour stocker des chaînes de caractères de longueur variable *. Le désaccord avec le manuel d'instructions n'est pas la chose la plus sage à faire, mais bien sûr c'est votre choix. Si vous voulez construire une application 'Oracle' qui risque de casser lors de la prochaine mise à niveau, l'utilisation de' VARCHAR' est définitivement une bonne solution. – Quassnoi

3

Pour commencer, Oracle ne pas avoir VARCHAR (MAX) datatype

Référence: