请教存储过程的问题?

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 就是
...全文
143 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
于2024年4月-2025年9月期间,研究团队在贵州习水国家级自然保护区制定39条样线,涵盖灌木林、常绿阔叶林、针叶林、常绿落叶阔叶混交林、针阔混交林等不同植被类型,每条样线分春夏秋冬4个季节采集样品,用真菌采集软件记录经纬度、海拔、采集地点、时间、生境等信息,使用佳能相机(R6 mark Ⅱ)对大型真菌进行拍照,并采集标本,标本存放于贵州省生物研究所大型真菌标本馆(HGAMF)。 通过形态学初步鉴定,结合分子生物学最终鉴定,参考已]报道的中国毒蘑菇名录开展毒蘑菇的认定。 调查到保护区内有毒真菌7目25科64种,导致中毒的主要类型有急性肾衰竭型、神经精神型和胃肠炎型。最终形成贵州习水国家级自然保护区大型有毒真菌图片数据集,它由以下2个部分组成。 (1)附件1包含78张原始照片(.JPG),照片名字包括了大型有毒真菌的拉丁名和中文名,若无中文名的直接用拉丁名。 (2)附件2是一个压缩文件,包含了2张工作表,其中一张表是大型有毒真菌39条样线的信息,另一张表是大型有毒真菌的中毒类型。 照片采用佳能相机R6 mark Ⅱ拍摄,物种鉴定通过多种文献核实,并经两位以上专家鉴定确认。该数据集可为研究地及周边的普通人识别有毒大型真菌提供参考,通过及时的图片对比,能有效避免误采误食大型有毒真菌,同时为因误食大型真菌可能引发的身体损伤进行了总结,能为患者及时治疗提供参考。

62,269

社区成员

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

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

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

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