在 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 版本中)。
我想知道是否可以在块 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 版本中)。