1

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

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

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

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

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
4

1 回答 1

2

要从实体框架消耗的存储过程中提供列元数据,您可以这样做

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
于 2013-06-13T15:53:06.170 回答