ActiveGUIDからobjectGUIDを取得するストアドプロシージャに取り組んでいます。結果を一時テーブルに格納し、他のプロセスで使用するために出力パラメーターに値を返します。SPは、さまざまなストアドプロシージャ、およびWebアプリケーションのPHP、ASP Classic、ASP.Netから呼び出されます。
私はそれをここに読んだ(一時テーブルに関して):
ストアドプロシージャ内で作成された場合、それらはストアドプロシージャの完了時に破棄されます。さらに、特定の一時テーブルのスコープは、それが作成されたセッションです。つまり、現在のユーザーにのみ表示されます。複数のユーザーが#TableXという名前の一時テーブルを作成でき、同時に実行されるクエリは互いに影響しません。ユーザーは自律型トランザクションのままであり、テーブルは自律型オブジェクトのままです。サンプルの一時テーブル名が「#」記号で始まっていることに気付くでしょう。
私は行ってもいいように思えますが、私が知らない落とし穴がないことを確認するためにいくつかのアドバイスを求めたかったのです。こちらがSPです。
前もって感謝します。
CREATE PROCEDURE stp_adlookup
@user varchar(100),
@objectGUID varbinary(256) OUTPUT
AS
SET NOCOUNT ON;
DECLARE @qry char(1000)
CREATE TABLE #tmp(
objectGUID nvarchar(256)
)
SET @qry = 'SELECT *
FROM openquery(ADSI, ''
SELECT objectGUID
FROM ''''LDAP://mydomaincontroller.com''''
WHERE sAMAccountName = ''''' + @user + '''''
'')'
INSERT INTO #tmp
EXEC(@qry)
SELECT @objectGUID=CAST(objectGUID as varbinary(256)) FROM #tmp;
DROP TABLE #tmp
SET NOCOUNT OFF;
GO