我正在尝试创建存储过程,但是会发生以下问题:
消息2715,第16级,状态3,过程usp_UpatePriv,第1行
列,参数或变量#1:找不到数据类型tblScreen。参数 或变量“ @screen”的数据类型无效。消息1087,第16级,状态1,过程usp_UpatePriv,第8行
必须声明表变量“ @screen”。
这是存储过程:
--require
答案 0 :(得分:5)
您需要声明表值类型,并且应该摆脱游标。 EG:
create type tblScreen as table(username nvarchar(50), idScren int, Prev bit)
go
create proc usp_UpatePriv
@screen tblScreen Readonly
as
begin
with q as
(
select o.Prev, n.Prev NewPrev
tblScreenPriv o
join @screen n
on o.UserName = n.UserName
and o.idScreen = n.idScreen
)
--select * from q
update q set Prev = NewPrev;
end