执行存储过程时 提示 "对象名无效(表名)"
如题:执行存储过程时 提示 "对象名无效(表名)" ,请高手赐教!
存储过程定义:
- SQL code
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
执行代码:
- SQL code
declare @m varchar(50),@r bitexecute CheckLogin 'aaa','111', @m output,@r outputselect @m ,@r
提示错误:
对象名 'S_UserInfo' 无效。
[解决办法]
你的表未创建,或者你未有权限访问这个表,下面的语句执行一下,看看什么结果
- SQL code
exec sp_help 'S_UserInfo'
[解决办法]
- SQL code
--先确定表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
[解决办法]
- SQL code
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
[解决办法]