如果start_date为字符,则无许转换,如为date,则如下:
select * from table
where (substr(to_char(start_date,'YYYYMMDD'),1,4) NOT BETWEEN '1900' AND '2004') OR
(substr(to_char(start_date,'YYYYMMDD'),5,2) NOT BETWEEN '01' AND '12') OR
(substr(to_char(start_date,'YYYYMMDD'),7,2) NOT BETWEEN '01' AND '31')如果能选出,然后再delete,该条件没有选出形如‘20041031’这样的错误,稍改下就可以
select * from table
where (substr(to_char(start_date,'YYYYMMDD'),1,4) NOT BETWEEN '1900' AND '2004') OR
(substr(to_char(start_date,'YYYYMMDD'),5,2) NOT BETWEEN '01' AND '12') OR
(substr(to_char(start_date,'YYYYMMDD'),7,2) NOT BETWEEN '01' AND '31')如果能选出,然后再delete,该条件没有选出形如‘20041031’这样的错误,稍改下就可以
c_date date;
c_rowid varchar2(50);
c_startdate char(5);select rowid,start_date into c_rowid,c_startdate from table where rowid=intputrowid;
c_date = to_date(start_date,'yyyymmdd');
outputrowid:='0';
exception
outputrowid:=intputrowid;
没有写完全.
只要输入参数是inputrowid,输出参数是outputrowid
如果inputrowid不等于'0'就删除该记录循环调用次过程应该可以.
然后在错误
那不是要个大的游标吗,数据量可能是百万级的,不实际啊?