向表中插入text类型的数据,表名是不确定的 存储过程
我的方法是 
 create   procedure   pr_inserttext 
 ( 
 @tableName   varchar(20), 
 @textContent   text 
 ) 
 as 
 declare   @sql   varchar(8000) 
 set   @sql= 'insert   into   [ '+@tableName+ '](textContent)   values( '+@textContent+ ') ' 
 exec(@sql)   
 但是如果textContent的值过大超过8000该怎么办呢? 
 有什么别的方法么? 
 谢谢
------解决方案--------------------不用定义变量: 
 create procedure pr_inserttext 
 ( 
 @tableName varchar(20), 
 @textContent text 
 ) 
 as 
 exec( 'insert into [ '+@tableName+ '](textContent) values( '+@textContent+ ') ')
------解决方案--------------------如果 非要用变量 ,可以建个辅助表来存储.
------解决方案--------------------如果表名或字段名是变量,需要用动态SQL语句实现。     
   动态sql语句基本语法      
   1   :普通SQL语句可以用Exec执行            
   eg:       Select   *   from   tableName      
                     Exec( 'select   *   from   tableName ')      
                     Exec   sp_executesql   N 'select   *   from   tableName '         --   请注意字符串前一定要加N            
   2:字段名,表名,数据库名之类作为变量时,必须用动态SQL            
   eg:          
   declare   @fname   varchar(20)      
   set   @fname   =    'FiledName '      
   Select   @fname   from   tableName                             --   错误,不会提示错误,但结果为固定值FiledName,并非所要。      
   Exec( 'select    '   +   @fname   +    '   from   tableName ')           --   请注意   加号前后的   单引号的边上加空格            
   当然将字符串改成变量的形式也可      
   declare   @fname   varchar(20)      
   set   @fname   =    'FiledName '   --设置字段名            
   declare   @s   varchar(1000)      
   set   @s   =    'select    '   +   @fname   +    '   from   tableName '      
   Exec(@s)                                 --   成功      
   exec   sp_executesql   @s       --   此句会报错                        
   declare   @s   Nvarchar(1000)     --   注意此处改为nvarchar(1000)      
   set   @s   =    'select    '   +   @fname   +    '   from   tableName '      
   Exec(@s)                                 --   成功              
   exec   sp_executesql   @s       --   此句正确            
   3.   输出参数      
   declare   @num   int,      
                   @sqls   nvarchar(4000)      
   set   @sqls= 'select   count(*)   from   tableName '      
   exec(@sqls)            
   --如何将exec执行结果放入变量中?            
   declare   @num   int,   @sqls   nvarchar(4000)      
   set   @sqls= 'select   @a=count(*)   from   tableName    '      
   exec   sp_executesql   @sqls,N '@a   int   output ',@num   output      
   select   @num      
------解决方案--------------------可以截取,用while + write写到表中去TRY,TRY,, 
 没试   
 Declare @TableName varchar(20) --表名 
 Declare @ColName varchar(20) --列名 
 Declare @Value Text  --要插入的值 
 Declare @sql varchar(Max) 
 DEclare @count int 
 @count = Length(@value)/5000 
 while @count > 0 
 beign 
 set @sql= "insert  "+@TableName+ "( "+@ColName+ ") values( "+@Value+ ") " 
 set @sql= "update  "+@TableName+ " set  "+@ColName+ ".Write "+( 
 end   
 Exec @sql   
 试试,我没写过