!~~~~~~~~郁闷不知道错在那里!~~~~~~~~~~~

hmilyfm 2007-05-30 11:16:12
我写了一个存储过程创建没有问题
运行就有问题是什么原因啊
create procedure checkuser
@usertype int,
@userinfo varchar(200),
@userpwd varchar(200)
as
begin
declare @strSql NVARCHAR(500)
if(@usertype>0)
set @strSql='SELECT dbo.ayUser.UserID,dbo.ayUser.UserName,dbo.ayUser.UserEmail,dbo.ayUser.PassWordID, dbo.ayPassWord.ayPassWordID,dbo.ayPassWord.ayPassWord FROM dbo.ayPassWord INNER JOIN dbo.ayUser ON dbo.ayUser.PassWordID = dbo.ayPassWord.ayPassWordID where dbo.ayUser.username='+@userinfo+' and dbo.ayPassWord.ayPassWord='+@userpwd
else
set @strSql='SELECT dbo.ayUser.UserID,dbo.ayUser.UserName,dbo.ayUser.UserEmail,dbo.ayUser.PassWordID, dbo.ayPassWord.ayPassWordID,dbo.ayPassWord.ayPassWord FROM dbo.ayPassWord INNER JOIN dbo.ayUser ON dbo.ayUser.PassWordID = dbo.ayPassWord.ayPassWordID where dbo.ayUser.userEmail='+@userinfo+' and dbo.ayPassWord.ayPassWord='+@userpwd

EXECUTE sp_executesql @strSql
print @usertype
print @strSql
end


exec checkuser 1,'ddd','123456'



服务器: 消息 207,级别 16,状态 3,行 1
列名 'ddd' 无效。



给点帮助啊
...全文
133 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwl0606 2007-05-30
  • 打赏
  • 举报
回复
@userinfo , @userpwd 都是字段要比较的值,所以要加上引号,在表达式中 '' 代表 '
如果不加引号 ,它会认为是列,当列来处理,所以就会出现 列名 'ddd' 无效。
用上面的试试
zsforever 2007-05-30
  • 打赏
  • 举报
回复
--try
create procedure checkuser
@usertype int,
@userinfo varchar(200),
@userpwd varchar(200)
as
begin
declare @strSql NVARCHAR(500)
if(@usertype>0)
set @strSql='SELECT dbo.ayUser.UserID,dbo.ayUser.UserName,dbo.ayUser.UserEmail,dbo.ayUser.PassWordID, dbo.ayPassWord.ayPassWordID,dbo.ayPassWord.ayPassWord FROM dbo.ayPassWord INNER JOIN dbo.ayUser ON dbo.ayUser.PassWordID = dbo.ayPassWord.ayPassWordID where dbo.ayUser.username='''+@userinfo+''' and dbo.ayPassWord.ayPassWord='+@userpwd
else
set @strSql='SELECT dbo.ayUser.UserID,dbo.ayUser.UserName,dbo.ayUser.UserEmail,dbo.ayUser.PassWordID, dbo.ayPassWord.ayPassWordID,dbo.ayPassWord.ayPassWord FROM dbo.ayPassWord INNER JOIN dbo.ayUser ON dbo.ayUser.PassWordID = dbo.ayPassWord.ayPassWordID where dbo.ayUser.userEmail='''+@userinfo+''' and dbo.ayPassWord.ayPassWord='+@userpwd

EXECUTE sp_executesql @strSql
print @usertype
print @strSql
end
lwl0606 2007-05-30
  • 打赏
  • 举报
回复
create procedure checkuser
@usertype int,
@userinfo varchar(200),
@userpwd varchar(200)
as
begin
declare @strSql NVARCHAR(500)
if(@usertype>0)
set @strSql='SELECT dbo.ayUser.UserID,dbo.ayUser.UserName,dbo.ayUser.UserEmail,dbo.ayUser.PassWordID, dbo.ayPassWord.ayPassWordID,dbo.ayPassWord.ayPassWord FROM dbo.ayPassWord INNER JOIN dbo.ayUser ON dbo.ayUser.PassWordID = dbo.ayPassWord.ayPassWordID where dbo.ayUser.username='''+@userinfo+''' and dbo.ayPassWord.ayPassWord='''+@userpwd+''''
else
set @strSql='SELECT dbo.ayUser.UserID,dbo.ayUser.UserName,dbo.ayUser.UserEmail,dbo.ayUser.PassWordID, dbo.ayPassWord.ayPassWordID,dbo.ayPassWord.ayPassWord FROM dbo.ayPassWord INNER JOIN dbo.ayUser ON dbo.ayUser.PassWordID = dbo.ayPassWord.ayPassWordID where dbo.ayUser.userEmail='''+@userinfo+''' and dbo.ayPassWord.ayPassWord='''+@userpwd+''''

EXECUTE sp_executesql @strSql
print @usertype
print @strSql
end

34,588

社区成员

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

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