Plsql PLS-00221';迄今为止';不是过程或未定义的错误,转换日期以句点分隔
我想将varchar2类型的IN参数转换为日期,以便在两个输入日期之间从数据库中提取数据。我有一个问题和一个问题 问题是我得到了错误 “PLS-00221:截止日期不是程序或未定义” 当我有以下代码时:Plsql PLS-00221';迄今为止';不是过程或未定义的错误,转换日期以句点分隔,plsql,procedure,Plsql,Procedure,我想将varchar2类型的IN参数转换为日期,以便在两个输入日期之间从数据库中提取数据。我有一个问题和一个问题 问题是我得到了错误 “PLS-00221:截止日期不是程序或未定义” 当我有以下代码时: create or replace procedure display_users( pi_date1 in varchar2, pi_date2 i
create or replace procedure display_users( pi_date1 in varchar2,
pi_date2 in varchar2,
po_userc out sys_refcursor) is
begin
if pi_date1 is not null then
to_date(pi_date1, 'DD/MM/YYYY HH24:MI:SS');
end if;
begin
open po_userc for
select ...
from ...
where ...
and ...
and t.inserted_date betweeen pi_date1 and pi_date2 ;
end;
end;
我不太熟悉pl/sql过程,我尝试了许多其他方法使其工作,但我没有做到这一点
问题是,在数据库中,我的日期如下:“16.08.2018 10:30:48”(我无法更改数据库中的数据格式)
日期部分由句点(.)分隔。将<代码>更改为日期(pi日期1,'DD/MM/YYYY HH24:MI:SS')代码>自日期起的工作时间由“/”分隔,正如错误消息所述,
至日期
不是一个过程<代码>截止日期是一个函数,函数始终返回一个值。必须将此值指定给变量
declare
v_date date;
begin
v_date := to_date(pi_date1, 'DD/MM/YYYY HH24:MI:SS');
end;
/
转换为日期时,必须注意格式。日、月、年、时、分、秒之间有分隔符吗?如果是点(
),则必须将其指定为格式
如果字符串如下所示:01.01.2000 01:01:01
那么您的格式必须如下所示:'DD.MM.YYYY HH24:MI:SS'
如果字符串如下所示:01/01/2000 01:01:01
然后,您的格式必须如下所示:
'DD/MM/yyyyy HH24:MI:SS'
正如错误消息所述,到日期
不是一个过程<代码>截止日期是一个函数,函数始终返回一个值。必须将此值指定给变量
declare
v_date date;
begin
v_date := to_date(pi_date1, 'DD/MM/YYYY HH24:MI:SS');
end;
/
转换为日期时,必须注意格式。日、月、年、时、分、秒之间有分隔符吗?如果是点(
),则必须将其指定为格式
如果字符串如下所示:01.01.2000 01:01:01
那么您的格式必须如下所示:'DD.MM.YYYY HH24:MI:SS'
如果字符串如下所示:01/01/2000 01:01:01
然后您的格式必须如下所示:
'DD/MM/yyyyy HH24:MI:SS'
尝试此pi_date1:=to_date(pi_date1,'DD/MM/yyyyy HH24:MI:SS')@Ovox您不能为其指定日期吗varchar2@hotfix那是我的错!您的光标看起来还不太正确。插入的日期是什么类型的?为什么date1
和date2
的类型是varchar2
?如果将date1
转换为date
,还应将date2
转换为date
inserted\u date是类型date,我被要求将date1和date2创建为varchar2。我要把他们两个都转换过来,我只是没有把它贴在这里。感谢您的帮助,两位年轻人都试用了此pi_date1:=to_date(pi_date1,'DD/MM/yyyyy HH24:MI:SS')@Ovox您不能为其指定日期吗varchar2@hotfix那是我的错!您的光标看起来还不太正确。插入的日期是什么类型的?为什么date1
和date2
的类型是varchar2
?如果将date1
转换为date
,还应将date2
转换为date
inserted\u date是类型date,我被要求将date1和date2创建为varchar2。我要把他们两个都转换过来,我只是没有把它贴在这里。谢谢你们两位的帮助