当前位置: 首页 > 面试题库 >

Oracle SQL查询中的常量

窦凯定
2023-03-14
问题内容

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

但是,当我随后尝试在后续的SELECT语句中使用DateIndex常量(我希望该常量基于“
DateIndex”返回值)时,解析器告诉我它正在执行SELECT INTO。

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

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

 BEGIN
      SELECT DateIndex
      FROM DUAL;
END;

选择表时只能使用常量而不返回结果吗?似乎很奇怪。

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

非常感谢您的协助。


问题答案:

您的代码不是Oracle SQL,而是PL / SQL。在PL / SQL中,查询结果必须分配给变量。因此,如果您只希望得到一个结果,则必须使用“
select into子句”,或者使用游标。

另一方面,在SQL中,您不能声明常量。有时您可以通过使用内联视图来解决此限制

select something-complex-here, x.pi 
from sometable, (
    select 3.1415 as pi, 1234 other_constant 
    from dual
)


 类似资料:
  • 在Crystal Reports中,我使用以下查询(针对Oracle数据库)为报表中的单个字段生成数据: 这可以很好地工作,并基于提供的{HB_As_At_Date}(the{?}语法是Crystal将参数值嵌入SQL(SQL)的方法。不过,上述查询的内容不是我的问题——我想做的是在几个不同的日期重复运行它,并将输出输入Crystal以供在报告中使用。 假设我希望在9月的每个星期一运行这个查询,我

  • 你好 上面的查询包括: WITH子句-本条款的目的是从2011年至2016年间购买物品的客户中识别不同的。 第一次查询-查询的主要目的是检查上述WITH子句中是否存在任何选定的。此外,该查询还应检查所选的是否与特定的匹配,并在名为的列中将其标记为 第二次查询-此查询执行的操作与第一次查询几乎相同。唯一的区别是,它在名为“DRIVE_TYPE”的列中将标记为 您可能已经注意到,在这两个查询中,都有一

  • 我使用以下软件包Apache zookeeper 3 . 4 . 14 Apache storm 1 . 2 . 3 Apache Maven 3 . 6 . 2 elastic search 7 . 2 . 0(本地托管)Java 1.8.0_252 aws ec2中型实例,带4GB ram 我已经使用这个命令来增加jvm的虚拟内存(之前它显示了jvm没有足够内存的错误) 我已经创建了 mave

  • 3.6.1. 列的最大值 3.6.2. 拥有某个列的最大值的行 3.6.3. 列的最大值:按组 3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8. 根据天计算访问量 3.6.9. 使用AUTO_INCREMENT 下面是一些学习如何用MySQL解决一些常见问题的例子。 在一些例子中,使用数据库表“shop”来储

  • 在命令行中,选择要操作的数据庫: shell> mysql your-database-name 创建数据庫表,并往里添加数据: CREATE TABLE shop ( article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL, dealer CHAR(20) DEFAULT ''

  • 此代码正在触发错误 无效的sql对象。 从文档中我觉得表中的任何对象都是sql对象<这里怎么了? 在Oracle 10G中考虑以下函数 在10G上下文中考虑以下函数 我得到了一个错误的无效对象 我的桌子就像 此表位于“测试”模式中,我与SCOTT有联系,SCOTT有“测试时授予选择权”。测试表到scott's 我还是会出错 ERR_INVALID_OBJECT