【问题标题】:Use variable in where clause PL/SQL在 where 子句 PL/SQL 中使用变量
【发布时间】:2020-04-16 19:05:13
【问题描述】:

我有几个查询合并在一起,所有这些查询在 where 子句中都有相同的日期参数。我想让它易于更新。我已经编写了 T-SQL 变量,但 PL SQL 有点不同。试图弄清楚如何执行这样的事情:

DECLARE
l_DATE DATE:= '01-JAN-18';
BEGIN
SELECT
ORDER_NUMBER, ORDER_DATE
FROM
T.ORDERS
WHERE
ORDER_DATE >= DBMS_OUTPUT.put_line(l_DATE);
END;

我使用的是 Oracle SQL Developer 版本 17.2.0.188 Oracle 数据库 11g 11.2.0.40.0

【问题讨论】:

标签: variables plsql dbms-output


【解决方案1】:

你应该直接引用变量:

DECLARE
l_DATE DATE:= '01-JAN-18';
BEGIN
  SELECT ORDER_NUMBER, ORDER_DATE
  -- BULK COLLECT INTO collection
  -- Oracle does not return directly from stored procedure like SQL Server
  FROM T.ORDERS
  WHERE ORDER_DATE >= l_DATE;
END;

甲骨文 12c:

DECLARE
   l_cur SYS_REFCURSOR;
   l_DATE DATE:= '01-JAN-18';
BEGIN

  OPEN l_cur FOR
  SELECT ORDER_NUMBER, ORDER_DATE
  FROM T.ORDERS
  WHERE ORDER_DATE >= l_DATE;

  DBMS_SQL.RETURN_RESULT(l_cur);
END;

db<>fiddle demo

【讨论】:

  • ORA-06550:第 22 行,第 10 列:PLS-00302:必须声明组件“RETURN_RESULT”
  • @KatieGray Oracle 12c 及更新版本
猜你喜欢
  • 2016-05-15
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-16
  • 1970-01-01
相关资源
最近更新 更多