【问题标题】:Oracle SQL declare given date as variableOracle SQL 将给定日期声明为变量
【发布时间】:2014-04-01 07:44:00
【问题描述】:

我正在尝试声明一个表示日期的变量, 我的代码如下所示:

declare
   mydate date;
begin
   select TO_DATE('01.01.2014 00:00:00','DD.MM.YYYY HH24:MI:SS') into mydate from dual;
end;

--then comes code like this, the code below works when there is no declaration:
WITH *** AS
(
),

*** AS
(
)

SELECT ***

FROM ***
GROUP BY ***

UNION ALL

SELECT ***
FROM ***

WHERE ***

上面的代码不起作用。 好吧,我不是 SQL 专家,所以有什么提示吗? 我还通过stackoverflow搜索但没有找到答案。

错误日志(没那么有用):

ORA-06550: line 8, column 1:
PLS-00103: found symbol "WITH" 
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

谢谢!

【问题讨论】:

  • 请发布错误
  • 我感觉你没有向我们展示你正在运行的整个代码。
  • 您发布的代码不是有效的 SQL。删除测试代码,它会工作。
  • 嗯,没有测试代码.. 但我不允许显示所有代码,所以我只是粘贴了其中没有数据的确切结构.. 代码顶部的声明是我需要运行的,因为我需要稍后在代码中使用该变量

标签: sql oracle date variables declare


【解决方案1】:

几点:

  1. 第二个选择没有“INTO”。你为什么执行 如果不使用结果,请在 PL/SQL 中选择查询。

  2. 在“结束;”之后您的 PL/SQL 块已完成。如果你想 执行另一个查询不要结束;

  3. 为什么要使用查询来执行像 to_date 这样的函数?你可以 已完成:

mydate := TO_DATE('01.01.2014','DD.MM.YYYY');

【讨论】:

  • 在我看来只有 3 是有效的。 1) 第二个选择在 PL/SQL 之外。 2)我想知道这是否是 OP 想要的。
  • 感谢@borjab 意见 3 看起来不错,但是当我想像这样使用“mydate”时它显示“无效标识符”:“AND a.T_MONAT_M = mydate”
  • 您需要使用正确的语法来表明您正在使用 pl/sql 变量。使用 a.T_MONAT_M = :mydate
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多