2010-02-09 25 views
0

Est-il possible de configurer la règle de typage implicite dans Oracle Server (au moins la version 10g)? Si ce n'est pas un lien vers la documentation des règles et comment les paramètres Oracle impactent les règles serait génial.Configuration de règles de typage implicites pour Oracle

Pour l'exécution de cette exemple lors de la requête:

SELECT '' AS A FROM DUAL 

Oracle signalera que la colonne A a VARCHAR(0) sur le type Oracle 10g et VARCHAR(32) sur Oracle 9i.

Merci

+3

En fait, si vous faites créez une vue comme SELECT '' AS A FROM DUAL; et sélectionnez data_type, data_length from user_tab_columns où nom_table = 'AV'; vous devriez voir les deux versions donner le résultat en tant que CHAR (0). Si 9i renvoie 32 caractères, je suppose que le partage du curseur est forcé –

+0

Gary vous avez raison, la différence est due au paramètre de partage du curseur ... Je voterais pour votre réponse si vous en faites une vraie :) Cela résout le problème particulier que nous avons en ce moment, mais ne répond pas à ma question plus générale;) – Michel

Répondre

1

vous pouvez être explicite, il fonctionnera avec toutes les versions d'Oracle:

SQL> CREATE VIEW test AS SELECT CAST(NULL AS VARCHAR2(32)) var32 FROM DUAL; 

View created 

SQL> desc test 
Name Type   Nullable Default Comments 
----- ------------ -------- ------- -------- 
VAR32 VARCHAR2(32) Y       
+0

Oui, nous pourrions mais comme nous migrons une grande application cela aurait un très grand impact sur le code. – Michel

0

Comme le dit Gary, le type de données par défaut est CHAR ....

SQL> create view v23 as select '' a from dual 
    2/

View created 

SQL> desc a 
Name    Null? Type 
------------------ -------- --------------- 
A       CHAR    

Quel problème essayez-vous de résoudre?

+0

Nous migrons une application d'Oracle 9i vers Oracle 10g. Cette différence de frappe a eu un impact sur notre application, donc j'ai pensé que cela pourrait être configurable quelque part dans Oracle. Cependant, comme Gary l'a souligné, la différence semble provenir du paramètre de partage de curseur. Merci – Michel