首页 > 解决方案 > 使用 WITH 子句声明和使用变量

问题描述

我有一个使用 WITH 子句(子查询分解)的查询,我需要定义一个变量并为其分配一个值,以便在 WITH 子句中的几个子查询中使用。

是否可以?

谢谢。

我尝试了一些方法来定义变量并影响它,但我总是有语法错误。

标签: sqloracle

解决方案


您可以使用以下两种方法:

1. 在 WITH 子句中使用

WITH MY_VARIABLE ( VAL ) AS (
    SELECT
        12 -- your variable value goes here
    FROM
        DUAL
), MY_MAIN_WITH_QUERY ( DIFFERENT_COLUMNS ) AS (
    SELECT
        1
    FROM
        MY_VARIABLE M
    WHERE
        M.VAL > 10 -- the use of a variable in your main query
)
SELECT
    *
FROM
    MY_MAIN_WITH_QUERY;

2. 使用定义

DEFINE VAL=12; -- declaring and assigning value to your variable
WITH MY_MAIN_WITH_QUERY ( DIFFERENT_COLUMNS ) AS (
    SELECT
        1
    FROM
        DUAL
    WHERE
        &VAL > 10 -- the use of your variable in your query
)
SELECT
    *
FROM
    MY_MAIN_WITH_QUERY;

干杯!!


推荐阅读