Existe-t-il un moyen de définir une table temporaire sans définir son schéma à l'avance?
Réponses
Trop de publicités?En fait à l'aide d'une VARIABLE de table, une table en mémoire, est la meilleure façon d'aller. La #table pour créer une table dans la bdd temp, et ##table est globale - à la fois avec disque hits. Envisager le ralentissement/hit connu avec le nombre de transactions.
CREATE PROCEDURE [dbo].[GetAccounts]
@AccountID BIGINT,
@Result INT OUT,
@ErrorMessage VARCHAR(255) OUT
AS
BEGIN
SET NOCOUNT ON;
SET @Result = 0
SET @ErrorMessage = ''
DECLARE @tmp_Accounts TABLE (
AccountId BIGINT,
AccountName VARCHAR(50),
...
)
INSERT INTO @tmp_Accounts ([AccountId], [AccountName]...
)
SELECT AccountID, AccountName
FROM Accounts
WHERE ...
IF @@Rowcount = 0
BEGIN
SET @ErrorMessage = 'No accounts found.'
SET @Result = 0
RETURN @Result
END
ELSE
BEGIN
SET @Result = 1
SELECT *
FROM @tmp_Accounts
END
Notez la manière dont vous insérez dans ce temp la table.
Le bas-côté de cela est que cela peut prendre un peu plus de temps pour écrire, comme vous devez définir votre table variable.
Je recommande aussi Invite SQL pour l'Analyseur de Requêtes par RedGate.