它在PL/SQL中以正确的形式使用吗?是这个函数真正的PL/SQL吗?
SELECT ename
,hiredate
, TO_CHAR(TRUNC(ADD_MONTHS(hiredate,6),'MONTH'),'Le DD MONTH YYYY') AS "Révision"
FROM emp
THX
它在PL/SQL中以正确的形式使用吗?是这个函数真正的PL/SQL吗?
SELECT ename
,hiredate
, TO_CHAR(TRUNC(ADD_MONTHS(hiredate,6),'MONTH'),'Le DD MONTH YYYY') AS "Révision"
FROM emp
THX
如果你的意思是,如果它是符合SQL99 SQL92或者,使用验证http://developer.mimer.com/validator/parser99/index.tml
符合Core SQL-99 – LJme 2010-06-28 01:49:36
这不是PL/SQL(这是Oracle的过程扩展SQL)。
ADD_MONTHS是,我相信,Oracle特定的SQL。
不确定是否使用TRUNC删除日期/时间的月份部分也是Oracle特定的。
该声明是有效的Oracle SQL:您将向hiredate
添加六个月,然后以特定格式返回该月的第一天。
但是,如果你想在PL/SQL中使用它,你需要将它返回到一些变量(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;
当然,这可能是你在你的EMP有一个以上的记录表。所以,你要么需要限制查询返回单行,或者你需要使用一个能够处理多行变量,如PL/SQL集合或光标:
....
for emp_recs in (SELECT ename
,hiredate
, TO_CHAR(TRUNC(ADD_MONTHS(hiredate,6),'MONTH'),'Le DD MONTH YYYY')
FROM emp)
loop
.....
它可能不是PL/SQL,但它(几乎)是有效的Oracle SQL。我能看到的唯一问题是格式模型中的'Le'需要引用才能正常工作,因为这只是Oracle本来想要找到某种含义的随机文本。
SELECT
ename,
hiredate,
TO_CHAR(TRUNC(ADD_MONTHS(hiredate,6),'MONTH'),'"Le" DD MONTH YYYY')
FROM emp
+1 - 以日期格式引用文字。 – 2010-06-29 11:36:02
你是什么意思“真”?标准?我不相信'TRUNC'是标准的SQL,我认为这是一个PL/SQL的东西。 – 2010-06-28 01:40:23
你是什么意思? – nickf 2010-06-28 01:40:32
对我来说看起来像是错误的SQL。 – 2010-06-28 01:42:48