est-il utilisé sous la forme correcte en PL/SQL?cette fonction est-elle vraie PL/SQL?
SELECT ename
,hiredate
, TO_CHAR(TRUNC(ADD_MONTHS(hiredate,6),'MONTH'),'Le DD MONTH YYYY') AS "Révision"
FROM emp
thx
est-il utilisé sous la forme correcte en PL/SQL?cette fonction est-elle vraie PL/SQL?
SELECT ename
,hiredate
, TO_CHAR(TRUNC(ADD_MONTHS(hiredate,6),'MONTH'),'Le DD MONTH YYYY') AS "Révision"
FROM emp
thx
Si vous voulez dire si elle est conforme ou SQL99 SQL92, utilisez le validateur http://developer.mimer.com/validator/parser99/index.tml
Conforme à Core SQL-99 – LJme
Il n'est pas PL/SQL (ce qui est l'extension de la procédure d'Oracle à SQL). ADD_MONTHS est, je crois, SQL spécifique à Oracle.
Vous ne savez pas si l'utilisation de TRUNC pour supprimer la partie jour/mois d'une date/heure est également spécifique à Oracle.
Cette instruction est valide Oracle SQL: vous ajoutez six mois au hiredate
, puis renvoyez le premier jour de ce mois dans un format spécifique.
Cependant, si vous voulez l'utiliser dans PL/SQL que vous devez le retourner dans une variable (s):
declare
l_ename emp.ename%type;
l_hiredate emp.hiredate%type;
l_revision varchar2(20);
begin
SELECT ename
,hiredate
, TO_CHAR(TRUNC(ADD_MONTHS(hiredate,6),'MONTH'),'Le DD MONTH YYYY')
INTO l_ename
, l_hiredate
, l_revision
FROM emp;
end;
Bien sûr, il est probable que vous avez plus d'un enregistrement dans votre EMP table. Donc, vous devez soit de limiter la requête pour renvoyer une seule ligne, ou vous devez utiliser une variable capable de gérer plusieurs lignes comme une collection PL/SQL ou un curseur:
....
for emp_recs in (SELECT ename
,hiredate
, TO_CHAR(TRUNC(ADD_MONTHS(hiredate,6),'MONTH'),'Le DD MONTH YYYY')
FROM emp)
loop
.....
Il ne peut pas être PL/SQL mais c'est (presque) valable Oracle SQL. Le seul problème que je peux voir est que le 'Le' dans le modèle de format in doit être cité pour que cela fonctionne car c'est juste un texte aléatoire qu'Oracle chercherait autrement à trouver.
SELECT
ename,
hiredate,
TO_CHAR(TRUNC(ADD_MONTHS(hiredate,6),'MONTH'),'"Le" DD MONTH YYYY')
FROM emp
+1 - en citant des littéraux dans un format de date. –
Que voulez-vous dire "vrai"? La norme? Je ne crois pas que 'TRUNC' soit SQL standard, je pense que c'est une chose PL/SQL. –
que voulez-vous dire? – nickf
On dirait faux SQL à moi. –