准确插入 date_from 和 date_to
Get exactly inserted date_from and date_to
我正在处理需要按日期过滤策略的应用程序。例如,如果用户输入 date_from:'21-jul-2017'
和 date_to:'21-jul-2019'
,它应该显示在此期间创建的所有策略。
到目前为止我做了什么:
cursor o1 is
select substr(tarifa,1,2), count(*)
from pol p, uvod u, doppov d
WHERE (izdavanje >=:prebacivanje.od) AND (izdavanje<=:prebacivanje.do)
and izdavanje>='01-jul-07'
and p.orgjed = u.sorgz (+)
and DATUM_PREKIDA is not null
and p.polica=d.polica and d.pov_dopl='P'
and d.status='F'
and cisti_ao(p.polica)!=0
group by substr(tarifa,1,2);
:prebacivanje.od
和:prebacivanje.do
是date_from
和date_to
。两者都是数据库中的 DATE 字段。
因此我需要将此查询修改为 return 插入 date_from
和 date_to
取决于用户输入的内容。
由于这是一个存在于表单中某处的游标,因此可能应该以某种方式执行该代码。是在您按下按钮时还是什么时候?
无论如何:尽管您从未说过问题是什么(您收到错误了吗?如果是,是哪一个?ORA-xxxxx、FRM-xxxxx?)(我猜查询没有return 随便什么),看来参数打扰你了。
查询 - 按原样 - 已正确编写。这些列的数据类型是 DATE
- 这也是项目的数据类型。如果不是(而是 CHAR
),则必须使用 TO_DATE
将其转换为 DATE
,例如
WHERE izdavanje >= to_date(:prebacivanje.od, 'dd-mon-yy')
AND izdavanje <= to_date(:prebacivanje.do, 'dd-mon-yy')
AND izdavanje >= to_date('01-jul-07' , 'dd-mon-yy')
为了确定使用哪种格式掩码,在 PL/SQL 过程的开头显示项目的值,使用 MESSAGE
built-in:
declare
cursor o1 is ...
begin
message('od = ' || :prebacivanje.od);
message('do = ' || :prebacivanje.do);
... the rest of your code goes here
end;
一般来说,最好的选择是确保数据类型匹配;否则,您必须注意转换或(更糟的是)依赖 Oracle 将尝试执行的隐式转换;有时会成功,有时不会。
我正在处理需要按日期过滤策略的应用程序。例如,如果用户输入 date_from:'21-jul-2017'
和 date_to:'21-jul-2019'
,它应该显示在此期间创建的所有策略。
到目前为止我做了什么:
cursor o1 is
select substr(tarifa,1,2), count(*)
from pol p, uvod u, doppov d
WHERE (izdavanje >=:prebacivanje.od) AND (izdavanje<=:prebacivanje.do)
and izdavanje>='01-jul-07'
and p.orgjed = u.sorgz (+)
and DATUM_PREKIDA is not null
and p.polica=d.polica and d.pov_dopl='P'
and d.status='F'
and cisti_ao(p.polica)!=0
group by substr(tarifa,1,2);
:prebacivanje.od
和:prebacivanje.do
是date_from
和date_to
。两者都是数据库中的 DATE 字段。
因此我需要将此查询修改为 return 插入 date_from
和 date_to
取决于用户输入的内容。
由于这是一个存在于表单中某处的游标,因此可能应该以某种方式执行该代码。是在您按下按钮时还是什么时候?
无论如何:尽管您从未说过问题是什么(您收到错误了吗?如果是,是哪一个?ORA-xxxxx、FRM-xxxxx?)(我猜查询没有return 随便什么),看来参数打扰你了。
查询 - 按原样 - 已正确编写。这些列的数据类型是 DATE
- 这也是项目的数据类型。如果不是(而是 CHAR
),则必须使用 TO_DATE
将其转换为 DATE
,例如
WHERE izdavanje >= to_date(:prebacivanje.od, 'dd-mon-yy')
AND izdavanje <= to_date(:prebacivanje.do, 'dd-mon-yy')
AND izdavanje >= to_date('01-jul-07' , 'dd-mon-yy')
为了确定使用哪种格式掩码,在 PL/SQL 过程的开头显示项目的值,使用 MESSAGE
built-in:
declare
cursor o1 is ...
begin
message('od = ' || :prebacivanje.od);
message('do = ' || :prebacivanje.do);
... the rest of your code goes here
end;
一般来说,最好的选择是确保数据类型匹配;否则,您必须注意转换或(更糟的是)依赖 Oracle 将尝试执行的隐式转换;有时会成功,有时不会。