我有一个可通过链接服务器访问的可更新视图(vwItem)([sql \ dev]。)
当我使用静态数据更新视图时,基础表会更新。
更新ci SET CertifiedNumber =' 44444'
FROM [sql \ dev] .contact.dbo.vwItem ci WITH(NOLOCK)
在哪里ci.CertifiedBatchID IN(5829)
但是当我尝试传递动态值时,
声明@lo_vch_CertifiedNumber varchar(50)= ' 1111111111222222222233333'
更新ci
SET CertifiedNumber = @lo_vch_CertifiedNumber +' 44444'
FROM [sql \ dev] .contact.dbo.vwItem ci WITH(NOLOCK)
在哪里ci.CertifiedBatchID IN(5829)
失败,出现以下错误消息
该声明已被终止。
消息16932,Level 16,State 1, 第1行
光标有FOR UPDATE列表和请求的列 要更新的不在此列表中。
我甚至不使用游标,但错误提到了游标..
以下是" vwItem"的定义。
创建视图[dbo] .vwItem
用schemabinding
AS
选择CertifiedItemID = cast(CertifiedItemID as varchar),
CertifiedNumber,[服务],重量,价格,CertifiedBatchID
来自dbo.tblItem(nolock)
为什么会出现错误?这是什么意思?
答案 0 :(得分:0)
通过实现更新vwItem的sproc而不是使用可更新视图来解决问题