在 Oracle SQL 中

With as in Oracle SQL

我想知道是否可以在块 begin/end.

中使用带有变量 and/or 的子句 "with as"

我的密码是

WITH EDGE_TMP 
AS 
 (select edge.node_beg_id,edge.node_end_id,prg_massif.longueur,prg_massif.lgvideoupartage,prg_massif.lgsanscable from prg_massif 
 INNER JOIN edge on prg_massif.asset_id=edge.asset_id 
 where prg_massif.lgvideoupartage LIKE '1' OR prg_massif.lgsanscable LIKE '1')
,
journey (TO_TOWN, STEPS,DISTANCE,WAY) 
AS
   (SELECT DISTINCT node_beg_id, 0, 0,  CAST(&&node_begin AS VARCHAR2(2000))
    FROM   EDGE_TMP
    WHERE  node_beg_id = &&node_begin
    UNION  ALL
    SELECT node_end_id, journey.STEPS + 1
    , journey.DISTANCE + EDGE_TMP.longueur,

    CONCAT(CONCAT(journey.WAY,';'), EDGE_TMP.node_end_id

    )

它创建一个字符串作为由 ; 分隔的输出但我需要将它作为变量取回或 table 你知道怎么做吗?我使用 concat 来检索大字符串中的数据。我可以使用 table 插入数据

, 需要使用结果进行更多治疗。

谢谢, 垫子

不,WITH 只是 SQL 语句的一部分。但是,如果您在 pl/sql 中描述您需要它的原因,我们可以给您一些建议。

编辑:如果您有 SQL 语句产生您需要的结果,您可以将它的值赋给 pl/sql 变量。有几种方法可以做到这一点,最简单的是使用 SELECT INTO statement(将 INTO 变量子句添加到您的 select 中)。

您可以使用 WITH 子句作为 SELECT INTO 语句的一部分(至少在不太旧的 Oracle 版本中)。