2011-05-16 4 views
3

j'ai un MVIEW sur le serveur DEVOracle encodage de caractères

CREATE MATERIALIZED VIEW MY_MVIEW 
AS 
SELECT col1 AS "N° INVOICE" from TABLE 

Le MVIEW a été installé sur le serveur PROD et quand je vérifie pour sa requête i ont la characther ° pas reconnu

SELECT query from user_mviews where mview_name = 'MY_MVIEW' ; 

QUERY 
--------------------------------------- 
SELECT col1 AS "N? INVOICE" from TABLE 

nous utilisons Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production pour les deux environnements.

Une idée de ce qui est arrivé et comment le corriger? ou je dois renommer mon alias?

Répondre

5

Chaque fois que vous voyez un point d'interrogation au lieu d'un caractère spécial, il signifie que le jeu de caractères du client ne supporte pas ce caractère et une conversion n'était pas disponible.

La conversion s'effectue avec le jeu de caractères de la base de données en tant que source et le jeu de caractères client en tant que cible. La variable d'environnement NLS_LANG vous permet de contrôler le jeu de caractères du client. NLS_LANG doit être défini avant l'ouverture de la connexion et ne peut pas être modifié pendant la session.

Pour plus d'informations sur NLS_LANG se référer à la Oracle® Database Globalization Support Guide

BTW, NLS_LANGUAGE n'a rien à voir avec le jeu de caractères! Il contrôle uniquement la langue utilisée dans les messages du serveur et les paramètres régionaux.

4

Je recommande vivement de renommer votre alias pour quelque chose de simple comme NO_INVOICE qui ne contient pas de caractères inhabituels et n'a pas besoin d'intégrer dans les guillemets doubles pour référence. Il n'est pas approprié de traiter les noms de colonnes comme s'il s'agissait d'en-têtes formatés pour les rapports. Faites-le dans le rapport. Avec des caractères non standard comme celui-ci, vous aurez des problèmes avec différents paramètres environnementaux comme NLS_LANG.

+0

Merci Tony, son ce que je suggère aussi, mais je voudrais aussi savoir la raison pour laquelle cela est arrivé – mcha

+0

-1 pour mentionner NLS_LANGUAGE en ce qui concerne les problèmes de jeu de caractères. NLS_LANG est responsable de cela. –

+0

Corrigé. Merci. –