高人,救命呀,我已徘徊了几个小时了

hanyucq123 2009-03-08 03:49:12
ALTER PROCEDURE dbo.voteSubjectAdd

@voteSubject varchar(100),
@exceptDate varchar(20),
@selectMode varchar(10)
AS

declare @sql nvarchar(100)

set @sql='insert into Auto_voteSubject(sh_votesubject,sh_exceptDate,sh_selectMode) values ('''+@voteSubject+''','''+cast(@exceptDate as varchar(20))+''','''+@selectMode+''')'

print @sql
exec(@sql)


我这个存储过程,我在vs2008里测试,传入参数
@voteSubject='中华人民共和国'
@execpteDate='2009-1-1'
@selectModd='single'
老是出现

insert into Auto_voteSubject(sh_votesubject,sh_exceptDate,sh_selectMode) values ('中华人民共和国','2009-1-1
字符串 '2009-1-1' 后的引号不完整。
'2009-1-1' 附近有语法错误。
没有行受影响。
(返回 0 行)


这倒底是怎么回事呀,我把那三个引号换成1个,2个,甚至用char(39)来替代,都不行
...全文
97 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Terry717 2009-03-08
  • 打赏
  • 举报
回复
把 declare @sql nvarchar(100) 改为: declare @sql varchar(8000)
baiyunyinv 2009-03-08
  • 打赏
  • 举报
回复
'insert into Auto_voteSubject(sh_votesubject,sh_exceptDate,sh_selectMode) values ('''+@voteSubject+''','''+cast(@exceptDate as varchar(20))+''','''+@selectMode+''')'

经测试长度为165


所以declare @sql nvarchar(100)需要申明得更大些
Riverwcj 2009-03-08
  • 打赏
  • 举报
回复
把数据类型范围改大一些.
  • 打赏
  • 举报
回复
这个不应该使用“exec()”!
hanyucq123 2009-03-08
  • 打赏
  • 举报
回复
非常感谢楼上几楼,1楼的正解
takako_mu 2009-03-08
  • 打赏
  • 举报
回复
2009-1-1直接写。不用转换。
Teng_s2000 2009-03-08
  • 打赏
  • 举报
回复
还有sh_exceptDate字段是什么类型的啊?是DateTime还是varchar
Teng_s2000 2009-03-08
  • 打赏
  • 举报
回复
declare @sql nvarchar(100)

100改大些,看看呢

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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