SQL动态语句问题,急~~~~~
数据库为SQLServer2005 
 数据表结构: 
 CategoryId      int   自动增长   分类ID 
 CategoryName   nvarchar(20)   分类名 
 CategoryIntro   nvarchar(200)   分类简介 
 ParentId   int   父类ID   
 下面是存储过程,实现在某个表(动态,各表结构一样)添加分类   
 set   ANSI_NULLS   ON 
 set   QUOTED_IDENTIFIER   ON 
 go     
 ALTER   PROCEDURE   [dbo].[EG_Category_Add]    
 ( 
 @CategoryName   nvarchar(20), 
 @CategoryIntro   nvarchar(200), 
 @ParentId   int, 
 @TableName   nvarchar(100) 
 )   
 AS   
 declare   @sql   varchar(1000) 
 set   @sql= 'Insert   Into   [ '   +   @TableName   +    ']   ([CategoryName],[CategoryIntro],[ParentId])   Values( '+str(@CategoryName)+ ', '+str(@CategoryIntro)+ ', '+str(@ParentId)+ ') ' 
 exec(@sql)      
 出现的问题:在参数分类名和简介为数字时能够正常插入,当为字符或中文时出错!   
 DECLARE   @RC   int 
 DECLARE   @CategoryName   nvarchar(20) 
 DECLARE   @CategoryIntro   nvarchar(200) 
 DECLARE   @ParentId   int 
 DECLARE   @TableName   nvarchar(100)   
 --   TODO:   在此处设置参数值。   
 EXECUTE   @RC   =   [XR_Data].[dbo].[XR_Category_Add]    
           '23233 ' 
       , '2323323 ' 
       ,0 
       , 'EG_ArticleCategory ' 
 这样能够正常添加分类;   
 DECLARE   @RC   int 
 DECLARE   @CategoryName   nvarchar(20) 
 DECLARE   @CategoryIntro   nvarchar(200) 
 DECLARE   @ParentId   int 
 DECLARE   @TableName   nvarchar(100)   
 --   TODO:   在此处设置参数值。   
 EXECUTE   @RC   =   [XR_Data].[dbo].[XR_Category_Add]    
           '本站动态 ' 
       , '本站动态 ' 
       ,0 
       , 'EG_ArticleCategory '   
 这样就提示:消息8114,级别16,状态5,过程EG_Category_Add,第14   行 
 从数据类型nvarchar   转换为float   时出错。   
 请各路高手给出正确的存储过程写法,谢谢! 
 第一个解决问题的一次性送50分!!
------解决方案--------------------ALTER PROCEDURE [dbo].[EG_Category_Add]  
 ( 
 @CategoryName nvarchar(20), 
 @CategoryIntro nvarchar(200), 
 @ParentId int, 
 @TableName nvarchar(100) 
 )   
 AS   
 declare @sql varchar(1000) 
 set @sql= 'Insert Into [ ' + @TableName +  '] ([CategoryName],[CategoryIntro],[ParentId]) Values( ' ' '+@CategoryName+ ' ' ', ' ' '+@CategoryIntro+ ' ' ', '+cast(@ParentId as varchar)+ ') ' 
 print @sql --加上些行,你可以查看拼接后的语句,也会发现你错误的原因 
 exec(@sql)