Où changer les NLS_DATE_FORMAT dans oracle 11g?
j'ai besoin de changer la NLS_DATE_FORMAT dans ma procédure Stockée.on dirait que son une variable de session et où dois-je modifier la variable de masque.
devrait-il être fait dans la déclaration mondiale ou d'ailleurs(je veux dire de frontend).
alter session set nls_date_format = '...'
docs.oracle.com/cd/E11882_01/server.112/e41084/...- Mais, comment, pour un colis?
- Il suffit d'exécuter le SQL à l'aide de
execute immediate
- Pourquoi voulez-vous changer la
NLS_DATE_FORMAT
dans votre procédure stockée? Si votre code exige que les chaînes de caractères dans un format particulier (ou convertir les chaînes de caractères dans un format particulier pour les dates), il devrait être à l'aide de conversions explicites avec un format explicite masque, auquel cas leNLS_DATE_FORMAT
n'est pas pertinent. Si votre code est en train de faire les conversions qui sont basés sur leNLS_DATE_FORMAT
, il ne devrait pas attention à ce que le format est, il suffit qu'un utilisateur a demandé, pour les données dans un format particulier.
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez modifier un paramètre NLS dans une procédure, alors vous pouvez utiliser
DBMS_SESSION.SET_NLS
. Étant donné un environnement qui ressemble à ceci:de l'exécution de la procédure de changer le format (note du triple guillemets simples):
Alternativement, vous pouvez utiliser le SQL dynamique,
EXECUTE IMMÉDIATE
, par exemple:Cependant, comme Justin Grotte notes c'est très inhabituel. Si vous êtes à la conversion entre les types de données que vous devriez toujours faire ce explicitement avec un format explicite. Dans le cas de dates de la bonne fonction à utiliser est
TO_DATE()