1
我想從存儲過程中調用用戶定義的函數,是否可以根據當前登錄的用戶動態調用它?調用函數時選擇當前用戶模式T-SQL
例如,我試圖執行這樣的用戶定義函數。
SELECT SCHEMA_NAME().ITEM_CNT(8,1315)
其中SCHEMA_NAME()是當前登錄的用戶模式。
我想從存儲過程中調用用戶定義的函數,是否可以根據當前登錄的用戶動態調用它?調用函數時選擇當前用戶模式T-SQL
例如,我試圖執行這樣的用戶定義函數。
SELECT SCHEMA_NAME().ITEM_CNT(8,1315)
其中SCHEMA_NAME()是當前登錄的用戶模式。
只能使用動態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;