1、变量定义应该要指定长度吧?
2、两日期相减后就是数值型,没必要转换:cdate := to_number(to_date(enddata,'YYYYMMDD') - to_date(begindata,'YYYYMMDD'));
3、这个别名?还是不要了吧,或者作为注释就可以了:count(a.calling_number) "16300"
4、first := 2,需要加分号(后面循环内cdate := cdate-1;之前也少了分号)
5、yearmonthday :=  select to_char(to_date(begindata,'YYYYMMDD') + 1,'YYYYMMDD') FROM dual;
改为(后面那个yearmonthday赋值也这样改):
select to_char(to_date(begindata,'YYYYMMDD') + 1,'YYYYMMDD') into yearmonthday FROM dual;
6、调用直接执行就可以了:xue_sw_count('20100701','20100705');
7、LOOP不知道这样写有没有问题,请高手检查另:一天一个表?有必要吗?还是合并一张表增加个字段好用些吧