我试图从存储过程调用用户定义的函数,是否可以根据当前登录的用户动态调用它?
例如,我正在尝试执行这样的用户定义函数。
SELECT SCHEMA_NAME().ITEM_CNT(8,1315)
其中SCHEMA_NAME()是当前登录的用户架构。
答案 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;