调用函数T-SQL时选择当前用户架构

时间:2016-08-22 15:12:30

标签: sql-server

我试图从存储过程调用用户定义的函数,是否可以根据当前登录的用户动态调用它?

例如,我正在尝试执行这样的用户定义函数。

SELECT SCHEMA_NAME().ITEM_CNT(8,1315)

其中SCHEMA_NAME()是当前登录的用户架构。

1 个答案:

答案 0 :(得分:0)

您只需使用动态SQL即可。

DECLARE @SQL NVARCHAR(100);

SET @SQL = N'
    SELECT ' + QUOTENAME(SCHEMA_NAME()) + '.ITEM_CNT(8, 1315);';

EXECUTE sp_executesql @SQL;

如果需要使用函数返回的值,稍后可以将其插入临时表中,然后查询它。

类似的东西:

DECLARE @SQL NVARCHAR(200);

CREATE TABLE #ITEM_CNT
(
    RESULT INT
);

SET @SQL = N'
    INSERT INTO #ITEM_CNT (RESULT)
    SELECT ' + QUOTENAME(SCHEMA_NAME()) + '.ITEM_CNT(8, 1315);';

EXECUTE sp_executesql @SQL;

SELECT RESULT
FROM #ITEM_CNT;