此sql代码运行良好。
SELECT
primax-stdmax ,
stdmax-stdmaxapp
FROM
(SELECT MAX(sequence#) stdmax, thread#, resetlogs_change#
FROM v$archived_log
WHERE standby_dest='YES'
GROUP BY thread#, resetlogs_change#) a,
(SELECT MAX(sequence#) stdmaxapp, thread#, resetlogs_change#
FROM v$archived_log
WHERE standby_dest='YES'
AND applied='YES'
GROUP BY thread#, resetlogs_change#) b,
(SELECT MAX(sequence#) primax, thread#, resetlogs_change#
FROM v$archived_log
WHERE standby_dest='NO'
GROUP BY thread#, resetlogs_change#) c
WHERE a.thread# = b.thread#
AND b.thread# = c.thread#;但是,当我像下面这样转换成pl/sql代码时,它就失败了。
declare
l_shipgap NUMBER := 0;
l_applygap NUMBER := 0;
begin
SELECT
primax-stdmax into l_shipgap,
stdmax-stdmaxapp into l_applygap
FROM
(SELECT MAX(sequence#) stdmax, thread#, resetlogs_change#
FROM v$archived_log
WHERE standby_dest='YES'
GROUP BY thread#, resetlogs_change#) a,
(SELECT MAX(sequence#) stdmaxapp, thread#, resetlogs_change#
FROM v$archived_log
WHERE standby_dest='YES'
AND applied='YES'
GROUP BY thread#, resetlogs_change#) b,
(SELECT MAX(sequence#) primax, thread#, resetlogs_change#
FROM v$archived_log
WHERE standby_dest='NO'
GROUP BY thread#, resetlogs_change#) c
WHERE a.thread# = b.thread#
AND b.thread# = c.thread#;
end;
/处决:
错误: SQL> @aa.sql stdmax-stdmaxapp转换为l_applygap *错误在第7行: ORA-06550:第7行,第20列: PL/ SQL : ORA-00923: FROM关键字未找到预期中的ORA-06550:第5行,第1列: PL/SQL:忽略
发布于 2022-04-10 17:42:13
语法错误。
由于语句包含一个SELECT、一个FROM、一个WHERE子句,对于INTO也是如此--只有一个:
SELECT
primax - stdmax,
stdmax - stdmaxapp
INTO l_shipgap, l_applygap
FROM ...(使用"one",我不是在谈论子查询--就像您说的那样,而是通用的SELECT语句语法)。
https://stackoverflow.com/questions/71818959
复制相似问题