日期:2014-05-16  浏览次数:20619 次

存储过程提示无效字符
一个简单的存储过程,删除不需要的数据
create or replace procedure PROBS_CLEARDATA is
tempdate nvarchar2(200);
str      nvarchar2(2000);
begin
select to_char(sysdate - 1, 'yyyy-mm-dd hh24:mi:ss')
into tempdate
from dual;

--暂时确定清理数据范围为:用excel导入的数据中一天前删除的数据
declare
cursor n is
select c.tablename from bdcleardata c order by c.ordernumber;
temptablename n%rowtype;
begin
for temptablename in n loop
str := 'delete from ' || temptablename.tablename ||
' s where s.state = ''删除'' and s.modifiedtime < to_date(''' ||
tempdate || ''',''yyyy-mm-dd hh24:mi:ss'');';
--dbms_output.put_line(str);
execute immediate str;

commit;
end loop;
end;

end PROBS_CLEARDATA;
提示表达式类型错误。
一直到将如上红色部分的nvarchar2修改为varchar2才可正常运行。
但是调试过程中又出现【无效字符】的提示,在别人提示之下,去掉绿色部分中间的【;】就可正常运行了。