Estou trabalhando em um procedimento armazenado que recupera o objectGUID do diretório ativo. Estou armazenando o resultado em uma tabela temporária e retornando o valor em um parâmetro de saída para uso com outros processos. O SP será chamado a partir de diferentes procedimentos armazenados, bem como dos aplicativos Web PHP, ASP Classic e ASP.Net.
Li AQUI que (em relação às tabelas temporárias):
Se criados dentro de um procedimento armazenado, eles são destruídos após a conclusão do procedimento armazenado. Além disso, o escopo de qualquer tabela temporária específica é a sessão em que é criada; ou seja, é visível apenas para o usuário atual. Vários usuários podem criar uma tabela temporária chamada #TableX e quaisquer consultas executadas simultaneamente não afetariam um ao outro - elas permaneceriam transações autônomas e as tabelas permaneceriam objetos autônomos. Você pode perceber que meu nome de tabela temporária de exemplo começou com um sinal "#".
Parece que estou pronto para ir, mas queria obter alguns conselhos para garantir que não houvesse nenhum problema. Aqui está o SP.
Desde já, obrigado.
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
fonte
do ponto de vista amplo, você ficará bem em fazê-lo dessa maneira. Os procedimentos armazenados têm escopo limitado, portanto, mesmo que (por exemplo) três usuários executem o mesmo procedimento armazenado e as tabelas temporárias não sejam combinadas, elas nem se verão.
Contanto que você não precise compartilhar os resultados com uma sessão diferente ou com um usuário executando um processo diferente, a tabela Temp pode ser um caminho perfeitamente correto.
fonte