set @sqlstr='insert into tab(cNum,cDate) values(' +@cNum +','+@cDate+')'
exec(@sql)出错
其中@cNum int,@cDate datetime

解决方案 »

  1.   

    exec('insert into tab(cNum,cDate) values(' +@cNum +','+@cDate+')') 
      

  2.   

    set @sqlstr='insert into tab(cNum,cDate) values(' +ltrim(@cNum) +','+convert(varchar(10),@cDate,120)+')' 
    exec(@sql)
      

  3.   

    哦,错了,应该exec(@sqlstr) ,请问1楼为什么不可以EXEC(@sqlstr)
      

  4.   

    set @sqlstr='insert into tab(cNum,cDate) values(' +ltrim(@cNum) +','+convert(varchar(10),@cDate,120)+')' 
    exec(@sql)
      

  5.   

    直接
    exec(字符串) 類型不需要裝換
    exec(@SQL)
    @SQL類型要匹配,所以先要轉換
      

  6.   


    declare @cNum int,@cDate datetime,@sqlstr varchar(5000)
    set @cNum = 2 
    set @cDate = '20091210'
    set @sqlstr='insert into tab(cNum,cDate) values(' +cast(@cNum as varchar(100)) +','''
    +convert(varchar(10),@cDate,120)+''')' 
    print(@sqlstr)insert into tab(cNum,cDate) values(2,'2009-12-10')--exec(@sql)
      

  7.   

    set @sqlstr='insert into tab(cNum,cDate) values(' + @cNum + ',''' + @cDate + ''')' 
    exec(@sql)
    用这两行代码试试看.因为日期类型的,在往数据库送时,应当以字符串的形式送进去.SQL会自动转换成日期时间类型的.
      

  8.   

    set @sqlstr='insert into tab(cNum,cDate) values(' +ltrim(@cNum) +','+convert(varchar(10),@cDate,120)+')' 
    exec(@sql)
      

  9.   

    set @sqlstr='insert into tab(cNum,cDate) values(' +ltrim(@cNum) +','+convert(varchar(10),@cDate,120)+')'
    insert into capture(cNum,cDate,sqlstr) select cNum,cDate,@sqlstr from inserted 
    exec(select sqlstr from capture)tab 表中的cDate 与sqlstr字符中的时间不相符,为什么呢?
      

  10.   


    --tab 表中的cDate 与sqlstr字符中的时间不相符,为什么呢? 通过转换后
    convert(varchar(10),cDate,120) 截取了,时分秒,
    convert(varchar(20),cDate,120) 这样就全了不知道,是说的这个么?