请教存储过程的问题?

Miriamy 2006-10-26 12:20:06
我写的存储过程,发现执行时取不到参数,不知为什么

CREATE PROCEDURE UserWant_Update

@UserID int,
@Sex varchar (4),
@AgeRange varchar (20),
@StudyLevel varchar (15),
@Salary varchar (20),
@Photo varchar (10),
@IsWed varchar (4),
@Height varchar (20),
@Province varchar (10),
@City varchar (10)
--@InputTime datetime

AS

Declare @SqlStr As Varchar (200)

SELECT UserID as wt_count FROM User_WantTo WHERE UserID = @UserID

if(@@RowCount>0)
begin
Set @SqlStr = 'UPDATE User_WantTo SET
Sex ='''+ @Sex+''',
AgeRange = '''+@AgeRange+''',
StudyLevel = '''+@StudyLevel+''',
Salary = '+@Salary+',
Photo = '''+@Photo+''',
IsWed='''+@IsWed+''',
Height = '''+@Height+''',
Province = '''+@Province+''',
City = '''+@City+'''

WHERE UserID = '+@UserID
--InputTime = '+@InputTime+'

end
else
begin
Set @SqlStr = 'INSERT INTO User_WantTo Values ('+@UserID+',
'''+@Sex+''',
'''+@AgeRange+''',
'''+@StudyLevel+''',
'+@Salary+',
'''+@Photo+''',
'''+@IsWed+''',
'''+@Height+''',
'''+@Province+''',
'''+@City+''')'

--'+@InputTime+'
end

-- select(@SqlStr)
exec (@SqlStr)

GO

--------------------------------------------------------------------------
过程调用:exec UserWant_Update 9,'男','25~30','大学专科以上',54,'有照片','未婚','155cm
以上','北京市','海淀区'

执行结果:用select(@SqlStr)看到的是:
将 varchar 值 'UPDATE User_WantTo SET
Sex ='男',
AgeRange = '25~30',
StudyLevel = '大学专科以上',
Salary = 54,
Photo = '有照片',
IsWed='未婚',
Height = '155cm以上',
Province = '北京市',
City = '海淀区'

WHERE UserID = '转化为int时发生错误,显然@UserID 未取到值,

不知道为什么取不到,明明传了参数的,第一个 9 就是
...全文
112 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Miriamy 2006-10-26
  • 打赏
  • 举报
回复
噢,谢谢,那么时间类型呢?
我用
inputtime = '''+@inputTime+'''
好像不行,也要用convert 吗?
潜水员2099 2006-10-26
  • 打赏
  • 举报
回复
楼上已回答
PS:
如果仅仅更新/插入数据,没有必要拼SQL串呀!
baya 2006-10-26
  • 打赏
  • 举报
回复
WHERE UserID = '+@UserID


应该写成 WHERE UserID = '+ convert(varchar(20),@userid)

这样就可以了,应该在sql连接字符串时,用数值和字符串连接会报错的
triffang 2006-10-26
  • 打赏
  • 举报
回复
Set @SqlStr = 'UPDATE User_WantTo SET
Sex ='''+ @Sex+''',
AgeRange = '''+@AgeRange+''',
StudyLevel = '''+@StudyLevel+''',
Salary = '+@Salary+',
Photo = '''+@Photo+''',
IsWed='''+@IsWed+''',
Height = '''+@Height+''',
Province = '''+@Province+''',
City = '''+@City+'''

WHERE UserID = '+
CAST(@UserID AS varchar(20))
myhuser 2006-10-26
  • 打赏
  • 举报
回复
时间类型也要cast
相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-26 12:20
社区公告

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

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