1

嗨,我在尝试使以下功能正常工作时遇到了麻烦。

CREATE FUNCTION test ( @nt_group VARCHAR(128) )
RETURNS @nt_usr TABLE (
      [name] [nchar](128) NULL
    , [type] [char](8) NULL
    , [privilege] [char](9) NULL
    , [mapped login name] [nchar](128) NULL
    , [permission path] [nchar](128) NULL
    )
AS BEGIN 

    INSERT  INTO @nt_usr
    EXEC master.dbo.xp_logininfo 'DOMAIN\USER', @nt_group
     RETURN
   END

据我所知,我应该被允许调用扩展存储过程,我收到以下错误

Mes 443,16 级,14 级

难道 xp_logininfo 可能会根据参数返回不同的结果集?当我使用 openquery 时,我可以通过设置来克服这个问题:SET FMTONLY OFF。有谁知道我的问题是否有类似的解决方法?

4

1 回答 1

1

你不能因为这个 xp 返回数据。即使您正在加载表格。

基本上,udfs 中的 xps 不是入门者......我会使用存储过程

CREATE FUNCTION

从函数调用扩展存储过程

扩展存储过程在从函数内部调用时,无法将结果集返回给客户端。任何向客户端返回结果集的 ODS API 都将返回 FAIL。扩展存储过程可以连接回 SQL Server 实例;但是,它不应尝试加入与调用扩展存储过程的函数相同的事务。

与来自批处理或存储过程的调用类似,扩展存储过程将在运行 SQL Server 的 Windows 安全帐户的上下文中执行。存储过程的所有者在将 EXECUTE 权限授予用户时应考虑这一点。

于 2010-03-10T19:01:23.623 回答