278 votes

SQL Server SELECT INTO @variable ?

J'ai le code suivant dans un de mes Sql (2008) Stockées Procs qui exécute parfaitement bien:

    CREATE PROCEDURE [dbo].[Item_AddItem]
        @CustomerId uniqueidentifier,
        @Description nvarchar(100),
        @Type int,
        @Username nvarchar(100),
    AS
    BEGIN

        DECLARE @TopRelatedItemId uniqueidentifier;
        SET @TopRelatedItemId = 
        (
           SELECT top(1) RelatedItemId 
           FROM RelatedItems 
           WHERE CustomerId = @CustomerId
        ) 

        DECLARE @TempItem TABLE
        (
            ItemId uniqueidentifier,
            CustomerId uniqueidentifier,
            Description nvarchar(100),
            Type int,
            Username nvarchar(100),
            TimeStamp datetime
        );

        INSERT INTO Item
        OUTPUT INSERTED.* INTO @TempItem
        SELECT NEWID(), @CustomerId, @Description, @Type, @Username, GETDATE()

        SELECT
            ItemId,
            CustomerId,
            @TopRelatedItemId,
            Description,
            Type,
            Username,
            TimeStamp
        FROM
            @TempItem
END
GO

Donc la question pour vous les gars est-il une possibilité de faire quelque chose le long des lignes de:

DECLARE @TempCustomer TABLE
(
   CustomerId uniqueidentifier,
   FirstName nvarchar(100),
   LastName nvarchar(100),
   Email nvarchar(100)
);
SELECT 
    CustomerId, 
    FirstName, 
    LastName, 
    Email 
INTO 
    @TempCustomer 
FROM 
    Customer
WHERE 
    CustomerId = @CustomerId

Pour que je puisse réutiliser ces données à partir de la mémoire dans d'autres énoncés suivants? SQL Server jette un ajustement avec la déclaration ci-dessus, mais je ne veux pas avoir à créer des variables et initialisation de chacun d'entre eux par le biais d'une instruction SELECT sur la même table.... POUAH!!!

Toutes les suggestions sur la façon d'obtenir quelque chose le long des lignes de plusieurs requêtes sur la même table?

555voto

dougajmcdonald Points 6231

Si vous voulez simplement céder certaines variables pour une utilisation ultérieure, vous pouvez les faire en un seul coup avec quelque chose dans ce sens :

Si c’est le genre de choses vous êtes après

224voto

RichardTheKiwi Points 58121

Vous ne pouvez pas sélectionner... DANS... une VARIABLE de TABLE. Le mieux que vous pouvez faire c’est créer tout d’abord, puis insérer dedans. Votre 2ème extrait doit être

34voto

vous pouvez faire ceci :

puis plus tard

vous ne devez déclarer la structure de #tempCustomer

17voto

Pat L Points 323

Il semble que votre syntaxe est un peu sorti. Il a quelques bons exemples

Puis plus tard

3voto

Valamas - AUS Points 8359

On dirait que vous voulez des tables temporaires. http://www.sqlteam.com/article/Temporary-tables

Notez que #TempTable est disponible tout au long de votre SP.

Remarque Le #TempTable # est accessible à tous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X