Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 在where子句PL/SQL中使用变量_Variables_Plsql_Dbms Output - Fatal编程技术网

Variables 在where子句PL/SQL中使用变量

Variables 在where子句PL/SQL中使用变量,variables,plsql,dbms-output,Variables,Plsql,Dbms Output,我有几个联合在一起的查询,它们在where子句中都有相同的date参数。我想让它更容易更新。我已经编写了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 D

我有几个联合在一起的查询,它们在where子句中都有相同的date参数。我想让它更容易更新。我已经编写了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

您应该直接引用变量:

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;

ORA-06550:第22行第10列:PLS-00302:组件“返回结果”必须为declared@KatieGrayOracle 12c和newerIn Oracle日期文字的语法为。