我正在研究一个从活动目录中检索 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
Run Code Online (Sandbox Code Playgroud)