存储过程与XML引发Visual Studio警告(适用于SQL Server)

时间:2011-12-15 19:56:47

标签: sql visual-studio-2010 tsql sql-server-2008-r2

我试图将这个问题提炼到我能做的最简单的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认为它是明确无误的。

2 个答案:

答案 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