我是 Oracle 的新手(虽然熟悉 SQL)并且必须编写一个相当复杂的查询,其中多次使用从当前日期派生的值。与其每次都计算值,不如为此目的声明一个常量。
但是,当我随后尝试在后续的 SELECT 语句(我希望返回基于“DateIndex”的值)中使用我的 DateIndex 常量时,解析器告诉我它正在执行 SELECT INTO。
我所拥有的(简化为最低形式)是...
DECLARE DateIndex CONSTANT NUMBER(10,0) := 24;
BEGIN
SELECT DateIndex
FROM DUAL;
END;
是否只能在选择到表中而不返回结果时使用常量?看起来很奇怪。
请注意,我没有对数据库的写入权限。
非常感谢您的帮助。
最佳答案
我更喜欢 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;
这使您可以在语句中使用常量之前定义常量,并且实际语句不会因子选择而困惑。
关于sql - Oracle SQL 查询中的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1293008/