【发布时间】:2019-04-03 11:11:16
【问题描述】:
我在 Oracle 工作,正在尝试为 GET 数据执行存储过程。
我想在 WHERE 内插入一个案例,但它没有编译我,并且以下错误返回给我:
- 错误 (11.5): PL / SQL: SQL 语句被忽略
- 错误 (22.37): PL / SQL: ORA-00905: 缺少关键字
这是程序:
create or replace PROCEDURE SP_S_DETTAGLIOLOTTI
(
DATAINIZIO IN VARCHAR2,
DATAFINE IN VARCHAR2,
CODICEPROFILO IN NUMBER,
dett_lotti OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN dett_lotti FOR
SELECT A.IDLOTTO as IDLOTTO, B.S_DENOMINAZIONE as PROFILOLOTTO, A.TOTRKD as TOTALERECORD,
CASE WHEN A.DATRPAPSA IS NULL
THEN 'NO'
ELSE 'SI'
END AS ELABORATO
FROM DLTOPST A
INNER JOIN REQUISITI B
ON A.COD_REQUISITO = B.COD_REQUISITI
WHERE
CASE WHEN DATAINIZIO IS NOT NULL AND CODICEPROFILO IS NULL
THEN DATA_INVIO_POSTEL BETWEEN TO_DATE(DATAINIZIO, 'DD/MM/YYYY HH24.MI.SS')
AND TO_DATE(DATAFINE, 'DD/MM/YYYY HH24.MI.SS')
WHEN DATAINIZIO IS NOT NULL AND CODICEPROFILO IS NOT NULL
THEN DATA_INVIO_POSTEL BETWEEN TO_DATE(DATAINIZIO, 'DD/MM/YYYY HH24.MI.SS')
AND TO_DATE(DATAFINE, 'DD/MM/YYYY HH24.MI.SS') AND COD_REQUISITO = CODICEPROFILO
ELSE COD_REQUISITO = CODICEPROFILO
END ;
END SP_S_DETTAGLIOLOTTI;
我哪里错了?
【问题讨论】:
-
“我哪里错了?”你不能在 where 子句中插入大小写
-
使用如果?如果我必须在 where 子句中这样做,有办法吗?
-
两者都不是,您可以使用
and、or、子查询等查看文档中的选择语法docs.oracle.com/cd/B19306_01/server.102/b14200/…
标签: oracle stored-procedures plsql case where-clause