报错如下
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的库环境 同样的程序 同样的存储 则没有报错 查了半天 没有结果
请教各位大哥
解决方案 »
- 每个“*”代表100
- 建立ORACLE全文索引,定时同步的问题
- 在ORACLE中用dual遇到的怪问题.
- 如何根据汉字的一二三四五排序
- 请问从sql server2000的数据库移植到Oracle8时, 在些语句上, 有哪些是需要变化的?
- 一个的oracle小问题!insert into语句不能插入数据
- 请问在redhat 8 linux下oracle9i 怎样运行(已经安装成功)
- 怎样装Oracle9iAS的infrastructure和portal吗?
- oracle 数据库中SYSTIMESTAMP类型的字段导出到excel乱码
- 求助:ora009233未找到要求的FROM关键字
- 请教高手们一个SQL怎么写
- 删除视图时报错(You need an unconditional ON DELETE DO INSTEAD rule.
发现把传入的两个日期参数改成字符型 就不报这个错误
是否是因为9i在存储中不允许直接传日期型参数呢问题是在另外一个10i环境下同样的程序 同样的存储就没有问题 不知道是不是9i跟10i之间的日期格式什么的是不是有区别