-------请牛人看清楚了在做解答----小弟谢谢了

hmilyfm 2007-06-07 03:10:19
alter procedure adduserinfo @upwd varchar(50),@uname varchar(200),@uemail varchar(200),@usex int,@ucityid int
as
declare @pid int
declare @uid int
declare @firstsql nvarchar(500)
declare @secsql nvarchar(1000)
declare @third nvarchar(200)
declare @foursql nvarchar(200)
set @firstsql='insert into ayPassWord (ayPassWord) values('''+@upwd+''''+')'
EXECUTE sp_executesql @firstsql
set @pid=@@Identity

set @secsql='insert into ayUser (username,useremail,sex,ayPassWordID) values ('''+@uname+''','''+@uemail+''','+@usex+','+@pid+','+@ucityid+')'
EXECUTE sp_executesql @secsql
set @uid=@@Identity

set @third='insert into ayFriend(userid) values('+@uid+')'
EXECUTE sp_executesql @third


set @foursql='insert into UserRole(userid,roleid,cityid) values('''+@uid+''',1,'''+@ucityid+''')'
EXECUTE sp_executesql @foursql


exec adduserinfo '123456','ronin','fmzwy@163.com',1,170
运行报错
------------
服务器: 消息 245,级别 16,状态 1,过程 adduserinfo,行 13
将 varchar 值 'insert into ayUser (username,useremail,sex,ayPassWordID) values ('ronin','fmzwy@163.com',' 转换为数据类型为 int 的列时发生语法错误。


-----------
请问怎么改
...全文
196 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mugua604 2007-06-07
  • 打赏
  • 举报
回复
int 不能 varchar 混用,在字符串中要改变一下类型!!
libb00 2007-06-07
  • 打赏
  • 举报
回复
你的@usex ,@ucityid ,@pid 都是int,而前面的半名话是varchar,连起来时出错

set @secsql='insert into ayUser (username,useremail,sex,ayPassWordID) values ('''+@uname+''','''+@uemail+''','+@usex+','+@pid+','+@ucityid+')'
句改为:
set @secsql='insert into ayUser (username,useremail,sex,ayPassWordID) values ('''+@uname+''','''+@uemail+''','+cast(@usex as varchar(1))+','+cast(@pid as varchar(10))+','+cast(@ucityid as varchar(10))+')'

后面也有这样的错误,自己看一下

hmilyfm 2007-06-07
  • 打赏
  • 举报
回复
alter procedure adduserinfo @upwd varchar(50),@uname varchar(200),@uemail varchar(200),@usex int,@ucityid int
as
declare @pid int ----密码ID
declare @uid int ----用户ID
declare @firstsql nvarchar(500)
declare @secsql nvarchar(1000)
declare @third nvarchar(200)
declare @foursql nvarchar(200)
set @firstsql='insert into ayPassWord (ayPassWord) values('''+@upwd+''')'
EXECUTE sp_executesql @firstsql
set @pid=@@Identity

set @secsql='insert into ayUser (username,useremail,sex,ayPassWordID,cityid) values ('''+@uname+''','''+@uemail+''','+@usex+','+@pid+','+@ucityid+')'
EXECUTE sp_executesql @secsql
set @uid=@@Identity

set @third='insert into ayFriend(userid) values('+@uid+')'
EXECUTE sp_executesql @third


set @foursql='insert into UserRole(userid,roleid,cityid) values('''+@uid+''',1,'''+@ucityid+''')'
EXECUTE sp_executesql @foursql
andyli001 2007-06-07
  • 打赏
  • 举报
回复
(username,useremail,sex,ayPassWordID)
是不是写错了?
andyli001 2007-06-07
  • 打赏
  • 举报
回复
@firstsql='insert into ayPassWord (ayPassWord) values('''+@upwd+''''+')'好像不对吧?
替换下面的看看呢
@firstsql='insert into ayPassWord (ayPassWord) values('''+@upwd+''')'

34,590

社区成员

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

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