Oracle SQL查询中的常量

Fou*_*aks 2 sql database oracle constants

我是Oracle新手(虽然熟悉SQL)并且必须编写一个相当复杂的查询,其中多次使用从当前日期派生的值.不是每次计算值,而是为此目的声明常量似乎是显而易见的.

但是,当我尝试在后续SELECT语句中使用我的DateIndex常量时(我希望根据"DateIndex"返回值),解析器告诉我它正在执行SELECT INTO.

我所拥有的(简化为最低形式)是......

 DECLARE DateIndex CONSTANT NUMBER(10,0) := 24;

 BEGIN
      SELECT DateIndex
      FROM DUAL;
END;
Run Code Online (Sandbox Code Playgroud)

是否只能在选择表而不是返回结果时使用常量?看起来很奇怪.

请注意,我没有对数据库的写权限.

非常感谢您的帮助.

f3l*_*lix 9

我更喜欢以下使用WITH和DUAL表:

WITH 
const AS ( SELECT 
    3.14 AS pi,
    1    AS one 
    FROM DUAL
)
SELECT * FROM sometable t,  const
 WHERE t.value = const.pi;
Run Code Online (Sandbox Code Playgroud)

这允许您在语句中使用之前定义常量,并且实际语句不会被子选择混乱.