动态表名的存储过程,该怎么处理

动态表名的存储过程
想用存储过程来向SQL 2008数据库中插入数据,但是表名不定,所以把表名作为参数传入,由于初次写存储过程,搞了一上午也没弄成功,老是报IDispatch error #3092错误,有会的帮忙看看什么问题,多谢。
存储过程:

CREATE PROCEDURE  insert_defect
@table_name nvarchar(255),
@coil_id int, 
@class int, 
@suface int, 
@xpos int,
@ypos int,
@area int,
@defltime nvarchar(255)
 AS
    declare @strSQL nvarchar(1000)
    declare @param1 nvarchar(64)
    declare @param2 nvarchar(64)
    declare @param3 nvarchar(64)
    declare @param4 nvarchar(64)
    declare @param5 nvarchar(64)
    declare @param6 nvarchar(64)
    set @param1 = @coil_id
    set @param2 = @class
    set @param3 = @suface
    set @param4 = @xpos
    set @param5 = @ypos
    set @param6 = @area
    select @strSQL = N'insert into '+@table_name+N'(COIL_ID ,CLASS ,SURFACE ,XPOS ,YPOS ,AREA ,DEFECT_TIME) values('+@param1+N','+@param2+N','+@param3+N','+@param4+N','+@param5+N','+@param6+N','+@defltime+N'); select SCOPE_IDENTITY()'
     exec(@strSQL)
GO


我在T-SQL里写入execute insert_defect @table_name='defect_table0',@coil_id=1,@class=0,@suface=1,@xpos=2,@ypos=3,@area=100,@defltime='2013-02-19'是可以成功的,但是用ADO调用老是不行:

try
{
               _CommandPtr _pCmd;   
_pCmd.CreateInstance("ADODB.Command");//__uuidof(Command));     
_pCmd->ActiveConnection=pCnn; 
_pCmd->CommandType=adCmdStoredProc;     
_pCmd->CommandText=_bstr_t("insert_defect"); 


_ParameterPtr pParam;
pParam.CreateInstance("ADODB.Parameter");

pParam=_pCmd->CreateParameter("tab_name",adVarChar,adParamInput,255,_variant_t(_bstr_t(strTable)));   
_pCmd->Parameters->Append(pParam); 

pParam=_pCmd->CreateParameter("coil_id",adInteger,adParamInput,sizeof(int),(_variant_t)(int)m_dwCurCoilID);   
_pCmd->Parameters->Append(pParam);  

pParam=_pCmd->CreateParameter("class",adInteger,adParamInput,sizeof(int),(_variant_t)lpInfo->uType);   
_pCmd->Parameters->Append(pParam);