2
votes

Erreur lors de la déclaration de plusieurs variables de table dans SQL

J'ai des problèmes pour déclarer des variables de table multibrins dans Microsoft SQL Server. Essayer de séparer les tables par des virgules, mais semble me donner des erreurs de syntaxe.

Le code ressemble à ceci. Affichez à la fois le code comme exemple et comme image pour que vous puissiez voir les marques d'erreur:

DECLARE
@StructuredProducts TABLE(
    StructuredProductId INT
    ,ArrangerIdv2 INT
    ,ISIN VARCHAR(50)
    ,InstrumentId INT
    ,Caption VARCHAR(100)
    ,DbRegDate DATE
    ,EndDate DATE
),
@PriceDataOld TABLE(
    StructuredProductId INT
    ,FinalDate DATE
    ,FinalPriceDate DATE
    ,FinalPrice DECIMAL(9,3)
    ,FinalPriceSek DECIMAL(9,3)
),
@PriceDataEarlyExercise TABLE(
    StructuredProductId INT
    ,EEDate DATE
    ,EEPriceDate DATE
    ,EEPrice DECIMAL(9,3)
    ,EEPriceSek DECIMAL(9,3)
),
@PriceDataActive TABLE(
    StructuredProductId INT
    ,ActiveDate DATE
    ,ActivePriceDate DATE
    ,ActivePrice DECIMAL(9,3)
    ,ActivePriceSek DECIMAL(9,3)
)

 entrez la description de l'image ici


3 commentaires

Utilisez un DECLARE pour chaque table, au lieu d'un ,


Vous voulez que le code soit aussi soigné que possible. La virgule n'est-elle pas le moyen de déclarer plusieurs variables?


Les tables et les variables @David sont complètement différentes, veuillez vérifier la syntaxe


3 Réponses :


1
votes
SQL server we have to create table like this format only there is no other styles 

 DECLARE @StructuredProducts TABLE(
StructuredProductId INT
,ArrangerIdv2 INT
,ISIN VARCHAR(50)
,InstrumentId INT
,Caption VARCHAR(100)
,DbRegDate DATE
,EndDate DATE
) ;
DECLARE @PriceDataOld TABLE(
StructuredProductId INT
,FinalDate DATE
,FinalPriceDate DATE
,FinalPrice DECIMAL(9,3)
,FinalPriceSek DECIMAL(9,3)
);
DECLARE @PriceDataEarlyExercise TABLE(
StructuredProductId INT
,EEDate DATE
,EEPriceDate DATE
,EEPrice DECIMAL(9,3)
,EEPriceSek DECIMAL(9,3)
);
DECLARE @PriceDataActive TABLE(
StructuredProductId INT
,ActiveDate DATE
,ActivePriceDate DATE
,ActivePrice DECIMAL(9,3)
,ActivePriceSek DECIMAL(9,3)
);    

0 commentaires

1
votes

changez-le comme ci-dessous

DECLARE
@StructuredProducts TABLE(
    StructuredProductId INT
    ,ArrangerIdv2 INT
    ,ISIN VARCHAR(50)
    ,InstrumentId INT
    ,Caption VARCHAR(100)
    ,DbRegDate DATE
    ,EndDate DATE
);DECLARE
@PriceDataOld TABLE(
    StructuredProductId INT
    ,FinalDate DATE
    ,FinalPriceDate DATE
    ,FinalPrice DECIMAL(9,3)
    ,FinalPriceSek DECIMAL(9,3)
);DECLARE
@PriceDataEarlyExercise TABLE(
    StructuredProductId INT
    ,EEDate DATE
    ,EEPriceDate DATE
    ,EEPrice DECIMAL(9,3)
    ,EEPriceSek DECIMAL(9,3)
);DECLARE
@PriceDataActive TABLE(
    StructuredProductId INT
    ,ActiveDate DATE
    ,ActivePriceDate DATE
    ,ActivePrice DECIMAL(9,3)
    ,ActivePriceSek DECIMAL(9,3)
)


0 commentaires

4
votes

Pour répondre à votre commentaire

La virgule n'est-elle pas le moyen de déclarer plusieurs variables?

eh bien, oui, une virgule peut être utilisée pour déclarer plusieurs variables locales et curseurs , mais pas table variables - les docs dit explicitement ceci:

n

Est un espace réservé indiquant que plusieurs variables peuvent être spécifiées et les valeurs assignées. Lors de la déclaration de variables de table , la table variable doit être la seule variable déclarée dans DECLARE déclaration.


0 commentaires