在“查看”或“存储过程”中包装系统过程

时间:2013-06-13 15:27:23

标签: .net sql-server entity-framework sql-server-2005

我试图从使用.NET Entity Framework的应用程序调用master..xp_fixeddrives,所以我需要结果可以解析。我希望调用master..xp_fixeddrives,但对于EF,它必须在视图或存储过程中。

我无法弄清楚创建它的语法。我尝试定义一个视图,并尝试删除select和exec,但没有运气。我怎么能这样做?

create view zzz
as select exec 'master..xp_fixeddrives';

还尝试将其创建为存储过程,但SP实际上并没有返回任何内容,因为它没有select语句。

CREATE PROCEDURE GetHardDriveFreeSpaceInMegabytes
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    EXEC master..xp_fixeddrives
END
GO

简单地调用以下内容无效

select *
from master..xp_fixeddrives

1 个答案:

答案 0 :(得分:2)

要从Entity Framework可以使用的存储过程提供列元数据,您可以

CREATE PROCEDURE dbo.GetHardDriveFreeSpaceInMegabytes
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @xp_fixeddrives TABLE
    (
    drive nvarchar(1),
    [MB free] int
    )


    INSERT INTO @xp_fixeddrives 
    EXEC master..xp_fixeddrives

    SELECT *
    FROM @xp_fixeddrives
END