2016-08-22 25 views
1

我想從存儲過程中調用用戶定義的函數,是否可以根據當前登錄的用戶動態調用它?調用函數時選擇當前用戶模式T-SQL

例如,我試圖執行這樣的用戶定義函數。

SELECT SCHEMA_NAME().ITEM_CNT(8,1315) 

其中SCHEMA_NAME()是當前登錄的用戶模式。

回答

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;