DECLARE
L_DATE_1 DATE :='2018-09-01';
L_DATE_2 DATE :='2018-11-12';
begin
SELECT C."APPCM_PHOTO_CASE_MATERIAL_ID" ID,
C.APPFE_EVENT_ID ev_id
FROM table_1 C
WHERE C.t_appcm_violation_date between L_DATE_1 and L_DATE_2
error 错误报告 -
ORA-06550:第 5 行,第 1 列:
PLS-00428:此 SELECT 子句中应有 INTO 子句
如果我已经确定了变量,他想从我这里得到什么?
with period as (
select
to_date('2018-09-01','yyyy-mm-dd') L_DATE_1,
to_date('2018-11-12','yyyy-mm-dd') L_DATE_2
from
dual
)
SELECT C.APPCM_PHOTO_CASE_MATERIAL_ID ID,
C.APPFE_EVENT_ID ev_id
FROM period,table_1 C
WHERE C.t_appcm_violation_date between L_DATE_1 and L_DATE_2
这就是我没有错误地得到我想要的东西的方式。如何通过声明局部变量进行类比?
错误消息清楚地表明您需要为结果声明一个局部变量并将其添加到查询中:
SELECT ... INTO local_result FROM ....但是在问题中,查询显然会返回不止一行,所以这里我们需要一个游标和一个循环。
更好的是隐式游标,它将在循环体中为结果隐式声明一个变量。
像这样的东西:
如果只想显示参数化查询的结果,可以使用 SQLPLUS 命令在 SQLPLUS 中设置变量
DEFINE:DECLARE和有什么区别DEFINE:DECLARE- 在匿名 SQL 块中使用的 PL/SQL 中的谓词。DEFINE- 类似于C/中的预处理器命令C++。DEFINE仅适用于客户端程序(SQLPLUS、、、SQL Developer等SQLcl)。客户端程序在向服务器发送请求之前,会将所有出现的此类“变量”替换为其值。那些。Oracle DB 将收到已填入值的查询。