执行存储过程时 提示 '对象名无效(表名)' 如题:执行存储过程时 提示 '对象名无效(表名)' ,请高手赐教! 存储过程定义:
CREATE proc CheckLogin @UserName varchar(20) ,@UserPassword varchar(40), @Msg varchar(100) output, @ResultID bit outputasbegin declare @ResultCount int /*返回行数*/ declare @StoredPassWord varchar(40) /*传递查询得到的密码*/ select @ResultCount = count(*) from S_UserInfo where UName = @UserName if @ResultCount = 0 begin set @Msg = '用户名不存在,请重新输入!' set @ResultID = 0 end else begin select @StoredPassWord = UPassword from S_UserInfo where UName = @UserName if @StoredPassWord = @UserPassword begin set @Msg = '登录成功!' set @ResultID = 1 end else begin set @Msg = '密码或用户名错误' set @ResultID = 0 end endend 执行代码:
declare @m varchar(50),@r bitexecute CheckLogin 'aaa','111', @m output,@r outputselect @m ,@r 提示错误: 对象名 'S_UserInfo' 无效。 ------解决方案-------------------- 你的表未创建,或者你未有权限访问这个表,下面的语句执行一下,看看什么结果
exec sp_help 'S_UserInfo' ------解决方案--------------------
--先确定表S_UserInfo是否存在--如果存在写成 --库名.所有着.UserInfo 看看你的所有者是什么~~ ------解决方案-------------------- ------解决方案-------------------- ------解决方案-------------------- 单个修改所有者sql语句如下: 查询分析器输入:EXEC sp_changeobjectowner 'user.table', 'dbo' user.table的意思为:所有者.表名,比如oblog.oblog_user,以上的语句表示将table这张表的所有者由 user改成dbo 量修改所有者语句如下: 查询分析器输入:exec sp_msforeachtable 'sp_changeobjectowner ''?'', ''dbo''' 即可把当面表的所有所有者换成dbo ------解决方案--------------------
CREATE proc CheckLogin @UserName varchar(20) ,@UserPassword varchar(40), @Msg varchar(100) output, @ResultID bit outputasbegin declare @ResultCount int /*返回行数*/ declare @StoredPassWord varchar(40) /*传递查询得到的密码*/ select @ResultCount = count(*) from 表所有者.S_UserInfo where UName = @UserName if @ResultCount = 0 begin set @Msg = '用户名不存在,请重新输入!' set @ResultID = 0 end else begin select @StoredPassWord = UPassword from 表所有者.S_UserInfo where UName = @UserName if @StoredPassWord = @UserPassword begin set @Msg = '登录成功!' set @ResultID = 1 end else begin set @Msg = '密码或用户名错误' set @ResultID = 0 end endend ------解决方案-------------------- 你应该是要去修改表所有者为dbo ------解决方案-------------------- |
|
来自: laoluo2017 > 《待分类》