我试图将这个问题提炼到我能做的最简单的SQL,但仍然显示问题。我在Visual Studio数据库项目中有一个sproc,它在Visual Studio中发出警告但在SQL Server中是完全有效的SQL。我想让警告消失。有人知道重新编写SQL来修复警告的方法吗?
CREATE PROCEDURE SampleSproc
@ResourcesXML xml
AS
BEGIN
SELECT S.PlanID FROM
(SELECT foo.x.value('@PlanID','int') AS PlanID
FROM @ResourcesXML.nodes('A') AS foo(x)) AS S
END
警告是:
SQL04151: Procedure: [dbo].[SampleSproc] contains an unresolved reference to an object.
Either the object does not exist or the reference is ambiguous because it could refer to any of the following objects:
[@ResourcesXML].[x]::[value] or [foo].[x].[value]
它抱怨foo.x.value部分。只是做x.value会抛出相同的警告。我不知道我能做什么来“欺骗”VS认为它是明确无误的。
答案 0 :(得分:2)
我认为SQL04151: Unable to resolve when using the XML Nodes错误报告可能适用,并包含解决方法。
答案 1 :(得分:0)
关于James链接的bug报告的解决方法有点儿,但确实有效。以下是我改变它的内容并且警告消失了:
WITH CTE_Result AS
(
SELECT foo.x.value('@PlanID','int') AS PlanID
FROM @ResourcesXML.nodes('A') AS foo(x)
)
SELECT PlanID FROM CTE_Result