SQL 2008R2 存储过程 怎么使用动态表名插入数据

SQL 2008R2 存储过程 如何使用动态表名插入数据
问题是这样的:
有一个存储过程是往一个表里插入数据;
后来发现这个数据有点太多,想根据某个字段分表存储,所有表的字段均一样;
那么我就写了一个新建表的存储过程(根据传入的2个参数,设定表名,存在则忽略,不存在则创建);
原先插入数据的存储过程:
1、根据2个字段查询表中某个字段(允许重复次数)的值【这里用到一次表名】
2、判断这个值是否超过限制
(1)、超过,执行完毕
(2)、没超过:使用merge into [表名] ...  when matched then ... when not matched then...来插入数据【这里使用到一次表名】

我现在要如何来改写呢?
1、根据传入的参数,执行新建表的存储过程
2、根据传入的参数,获取表名
3、插入操作中的表名都使用2中获取到的表名
我如果想这样做的话,是不是需要定义一个sql字符串,然后设置这个字符串,然后再执行它?
字段有点多,我的这个存储过程有600+行,这样写sql字符串感觉会死人的。。。
有什么办法解决这个问题吗?
万分感谢!
------解决思路----------------------
这样设计智能用动态sql语句了,就是你的想法,拼凑sql语句,尽量写得可读些有利于查错和维护


------解决思路----------------------
你都传入表名了,直接去 SYSCOLUMNS里面找字段 这样 你的存储过程 就不会长了~~