动态SQL执行问题(急)

billcaoqh 2009-12-10 12:58:45
set @sqlstr='insert into tab(cNum,cDate) values(' +@cNum +','+@cDate+')'
exec(@sql)出错
其中@cNum int,@cDate datetime
...全文
104 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
水族杰纶 2009-12-10
  • 打赏
  • 举报
回复
exec('insert into tab(cNum,cDate) values(' +@cNum +','+@cDate+')') 
fwacky 2009-12-10
  • 打赏
  • 举报
回复

--tab 表中的cDate 与sqlstr字符中的时间不相符,为什么呢?

通过转换后
convert(varchar(10),cDate,120) 截取了,时分秒,
convert(varchar(20),cDate,120) 这样就全了

不知道,是说的这个么?


billcaoqh 2009-12-10
  • 打赏
  • 举报
回复
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字符中的时间不相符,为什么呢?

Mr_Nice 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wufeng4552 的回复:]
SQL codeexec('insert into tab(cNum,cDate) values('+@cNum+','+@cDate+')')
[/Quote]

真快啊!
Rotel-刘志东 2009-12-10
  • 打赏
  • 举报
回复
set @sqlstr='insert into tab(cNum,cDate) values(' +ltrim(@cNum) +','+convert(varchar(10),@cDate,120)+')' 
exec(@sql)
幸运的意外 2009-12-10
  • 打赏
  • 举报
回复
set @sqlstr='insert into tab(cNum,cDate) values(' + @cNum + ',''' + @cDate + ''')'
exec(@sql)
用这两行代码试试看.因为日期类型的,在往数据库送时,应当以字符串的形式送进去.SQL会自动转换成日期时间类型的.
fwacky 2009-12-10
  • 打赏
  • 举报
回复

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)
--小F-- 2009-12-10
  • 打赏
  • 举报
回复
噌分 水哥太牛了
billcaoqh 2009-12-10
  • 打赏
  • 举报
回复
再次谢谢
Four 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wufeng4552 的回复:]
引用 3 楼 billcaoqh 的回复:
哦,错了,应该exec(@sqlstr) ,请问1楼为什么不可以EXEC(@sqlstr)

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

So Fast....
水族杰纶 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 billcaoqh 的回复:]
哦,错了,应该exec(@sqlstr) ,请问1楼为什么不可以EXEC(@sqlstr)
[/Quote]
直接
exec(字符串) 類型不需要裝換
exec(@SQL)
@SQL類型要匹配,所以先要轉換
billcaoqh 2009-12-10
  • 打赏
  • 举报
回复
先谢了,试一下
sych888 2009-12-10
  • 打赏
  • 举报
回复
set @sqlstr='insert into tab(cNum,cDate) values(' +ltrim(@cNum) +','+convert(varchar(10),@cDate,120)+')'
exec(@sql)
billcaoqh 2009-12-10
  • 打赏
  • 举报
回复
哦,错了,应该exec(@sqlstr) ,请问1楼为什么不可以EXEC(@sqlstr)
水族杰纶 2009-12-10
  • 打赏
  • 举报
回复
set @sqlstr='insert into tab(cNum,cDate) values(' +ltrim(@cNum) +','+convert(varchar(10),@cDate,120)+')' 
exec(@sql)


34,592

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧