2016-08-22 3 views
1

ストアドプロシージャからユーザー定義関数を呼び出そうとしていますが、現在ログインしているユーザーに基づいてこれを動的に呼び出すことはできますか?関数を呼び出すときに現在のユーザースキーマを選択

たとえば、私はこのようなユーザー定義関数を実行しようとしています。

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; 
関連する問題