报错如下
select error :ora-01858:在要求输入数字处找到非数字字符
存储过程如下
CREATE OR REPLACE PROCEDURE "UP_TRANSFER_REPORT" (as_Yjbatchno in varchar2,
as_LibId in varchar2,
adt_Start in date,
adt_End in date,
rc1 IN OUT pack_.mycur
)
AS
as_LibId_2 varchar2(1);
as_Yjbatchno2 varchar2(12);
ls_Sql varchar2(4000);
adt_End2 date;
Begin
as_LibId_2 := null;
If as_LibId = '0' then
as_LibId_2 := 'A';
else
as_LibId_2 := as_LibId;
end if;
as_Yjbatchno2 := as_Yjbatchno ;
adt_End2 :=adt_End + 1;
ls_Sql := ' SELECT manager.main_bibli.rec_ctrl_id, ';
ls_sql:=ls_sql|| ' substr(manager.main_bibli.class_no_1,1,3), ';
ls_sql:=ls_sql|| ' manager.main_bibli.class_no_1, ';
ls_sql:=ls_sql|| ' ct.access_no, ';
ls_sql:=ls_sql|| ' ct.price, ';
ls_sql:=ls_sql|| ' ct.price_flag, ';
ls_sql:=ls_sql|| ' manager.main_bibli.title, ';
ls_sql:=ls_sql|| ' manager.main_bibli.isn, ';
ls_sql:=ls_sql|| ' manager.main_bibli.authors,';
ls_sql:=ls_sql|| ' manager.main_bibli.publisher, ';
ls_sql:=ls_sql|| ' manager.main_bibli.pubdate_char ';
ls_sql:=ls_sql|| ' FROM manager.ct_2_'||as_LibId_2||' ct, ';
ls_sql:=ls_sql|| ' manager.main_bibli ';
ls_sql:=ls_sql|| ' WHERE ( manager.main_bibli.rec_ctrl_id = ct.rec_ctrl_id ) and ';
ls_sql:=ls_sql|| ' ( ( ct.yj_batchno like '''||as_Yjbatchno2||'%'') AND ';
ls_sql:=ls_sql|| ' ( ct.circul_status >= ''03'' ) AND ';
--ls_sql:=ls_sql|| ' (ct.yj_date between '" + convert(char(30), @adt_Start) + "' AND '" + Convert(char(30), @adt_End) + "' ) ) "
--转换时间
ls_sql:=ls_sql|| ' (ct.yj_date between '''||adt_Start||''' AND '''||adt_End2||''' ) ) ';
OPEN rc1 FOR ls_sql;
END up_transfer_report;
在pl_sql中执行没有任何报错
但是在pb数据窗口中执行就出现
select error :ora-01858:在要求输入数字处找到非数字字符
不知何故
另外有一个10i的库环境 同样的程序 同样的存储 则没有报错 查了半天 没有结果
请教各位大哥
select error :ora-01858:在要求输入数字处找到非数字字符
存储过程如下
CREATE OR REPLACE PROCEDURE "UP_TRANSFER_REPORT" (as_Yjbatchno in varchar2,
as_LibId in varchar2,
adt_Start in date,
adt_End in date,
rc1 IN OUT pack_.mycur
)
AS
as_LibId_2 varchar2(1);
as_Yjbatchno2 varchar2(12);
ls_Sql varchar2(4000);
adt_End2 date;
Begin
as_LibId_2 := null;
If as_LibId = '0' then
as_LibId_2 := 'A';
else
as_LibId_2 := as_LibId;
end if;
as_Yjbatchno2 := as_Yjbatchno ;
adt_End2 :=adt_End + 1;
ls_Sql := ' SELECT manager.main_bibli.rec_ctrl_id, ';
ls_sql:=ls_sql|| ' substr(manager.main_bibli.class_no_1,1,3), ';
ls_sql:=ls_sql|| ' manager.main_bibli.class_no_1, ';
ls_sql:=ls_sql|| ' ct.access_no, ';
ls_sql:=ls_sql|| ' ct.price, ';
ls_sql:=ls_sql|| ' ct.price_flag, ';
ls_sql:=ls_sql|| ' manager.main_bibli.title, ';
ls_sql:=ls_sql|| ' manager.main_bibli.isn, ';
ls_sql:=ls_sql|| ' manager.main_bibli.authors,';
ls_sql:=ls_sql|| ' manager.main_bibli.publisher, ';
ls_sql:=ls_sql|| ' manager.main_bibli.pubdate_char ';
ls_sql:=ls_sql|| ' FROM manager.ct_2_'||as_LibId_2||' ct, ';
ls_sql:=ls_sql|| ' manager.main_bibli ';
ls_sql:=ls_sql|| ' WHERE ( manager.main_bibli.rec_ctrl_id = ct.rec_ctrl_id ) and ';
ls_sql:=ls_sql|| ' ( ( ct.yj_batchno like '''||as_Yjbatchno2||'%'') AND ';
ls_sql:=ls_sql|| ' ( ct.circul_status >= ''03'' ) AND ';
--ls_sql:=ls_sql|| ' (ct.yj_date between '" + convert(char(30), @adt_Start) + "' AND '" + Convert(char(30), @adt_End) + "' ) ) "
--转换时间
ls_sql:=ls_sql|| ' (ct.yj_date between '''||adt_Start||''' AND '''||adt_End2||''' ) ) ';
OPEN rc1 FOR ls_sql;
END up_transfer_report;
在pl_sql中执行没有任何报错
但是在pb数据窗口中执行就出现
select error :ora-01858:在要求输入数字处找到非数字字符
不知何故
另外有一个10i的库环境 同样的程序 同样的存储 则没有报错 查了半天 没有结果
请教各位大哥
发现把传入的两个日期参数改成字符型 就不报这个错误
是否是因为9i在存储中不允许直接传日期型参数呢问题是在另外一个10i环境下同样的程序 同样的存储就没有问题 不知道是不是9i跟10i之间的日期格式什么的是不是有区别