所以,我已经传递了一个代码,我试图在SQL Developer中执行代码,但是我得到了一个错误的正确括号""错误。
这是代码:
(SELECT A.ID_STAGE ID_INT_STAGE
FROM STAGE_D A,
( SELECT STAGE_LINK_B.ID_STAGE, STAGE_LINK_B.ID_PRIOR_STAGE
FROM STAGE_LINK_B
CONNECT BY PRIOR STAGE_LINK_B.ID_STAGE = STAGE_LINK_B.ID_PRIOR_STAGE
START WITH STAGE_LINK_B.ID_STAGE = V$[STAGE_D.ID_STAGE]
)B
WHERE A.ID_STAGE = B.ID_PRIOR_STAGE
AND A.CD_STAGE = 'INT'
) STG
WHERE INT_F.ID_INT_STAGE = STG.ID_INT_STAGE
AND INT_F.IND_CURR_ROW = 'Y';
我之前一直试图读取连接,但似乎错误在于语法。
任何帮助表示赞赏!
谢谢!
答案 0 :(得分:1)
我相信您的直接问题是V$[STAGE_D.ID_STAGE]
。根本不清楚语法应该是什么。我不认为方括号在这里有任何有效,它们的存在可能导致解析器混淆并抛出这个不太清晰的错误消息。我能够使用类似的语法重现相同的错误。
我不知道你应该改变什么建议,因为我真的不知道这个表达是什么意思。通常,Oracle中的“V $”将是包含有关内部数据库状态的动态信息的表或视图名称的开头(例如,V $ SESSION是显示当前连接的数据库会话的视图)。但似乎很清楚,这不是你在这里寻找的东西。
鉴于它在START WITH
子句中使用,这可能是一个表达式,用于返回一些用于查找第一条记录的值。但它在Oracle上下文中没有意义。也许给你这个代码的人是从其他一些上下文运行它,在将这个表达式传递给Oracle之前对它进行评估。
答案 1 :(得分:0)
这是一个不完整的命令。如果你将其归结为基本组件,那就是:
( <Complex_table_definition> ) STG
WHERE <Conditions>
基本上没有SELECT
,但STG
定义的一部分除外。