ALTER                     PROCEDURE pysdwa_SubjChkItem 
  @CheckType varchar(40),
  @SqlWhere varchar(800)declare @sqltempinsert varchar(400)
declare @sqlfromwhereone varchar(400)
declare @sqlfromwheretwo varchar(400)if exists (select * from sysobjects where id = object_id(N'ChkItemTemp') 
  and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table ChkItemTempCREATE TABLE ChkItemTemp 
(
  checkitem [varchar] (42) COLLATE Chinese_PRC_CI_AS NULL ,
  checkitemname [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,
)set @sqlfromwhereone=' from busicheckledger a,pubaccchecktype  
        b,pubchecktype c,pubcheckitems d'+
        ' where (a.copyid=b.copyid) and (a.copyyear=b.copyyear) and 
        (a.accid=b.accid)'+
        ' and (a.copyid=c.copyid) and (a.copyyear=c.copyyear) and 
        (b.checktype=c.checktype)'
set @sqlfromwheretwo=' and (a.copyid=d.copyid) and 
        (a.copyyear=d.copyyear) and (c.checktype=d.checktype)'+
         ' and (a.'+@CheckType+'=d.checkitem) and   
        (c.checktype='''+@CheckType+''''+') '
set @sqltempinsert='insert into ChkItemTemp(checkitem,checkitemname)'+
        ' select distinct d.checkitem,d.checkitemname'
 
exec(@sqltempinsert+@sqlfromwhereone+@sqlfromwheretwo+@SqlWhere)=====================================================================调试上述存储过程时,发现varchar型变量最大程度只能定义到361,
实际赋值长度超出则截断(本例中定义为400)
但最后
exec(@sqltempinsert+@sqlfromwhereone+@sqlfromwheretwo+@SqlWhere)
还是无法正确执行,
直接将@sqltempinsert+@sqlfromwhereone+@sqlfromwheretwo+@SqlWhere
的值在SQL Explore中则可以正确执行
怀疑还是被截断
那么有谁知道exec()中的变量长度最多可以为多少?
或有其他解决方法?^_^
多谢各位,一定给分!