试图找出连接的语法

时间:2015-12-30 20:29:52

标签: sql oracle oracle-sqldeveloper

所以,我已经传递了一个代码,我试图在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';

我之前一直试图读取连接,但似乎错误在于语法。

任何帮助表示赞赏!

谢谢!

2 个答案:

答案 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定义的一部分除外。