J'ai trois tables avec des données différentes et je dois insérer dans une table TEMP et renvoyer cette table dans StoredProcedure.
J'ai essayé comme:
-- To get last 10 Days Letters count
SELECT col1,col2,1 AS Type, LettersCount
INTO #temp FROM tblData
-- To get last 4 weeks Letters count
SELECT col1,col2,2 AS Type, LettersCount
INTO #temp FROM tblData
-- To get month wise Letters count
SELECT col1,col2,3 AS Type, LettersCount
INTO #temp FROM tblData
Afficher l'erreur en tant que
Msg 2714, Level 16, State 1, Line 16
There is already an object named '#temp ' in the database.
Msg 102, Level 15, State 1, Line 24
Incorrect syntax near 'T'.
Msg 2714, Level 16, State 1, Line 32
There is already an object named '#temp ' in the database.
Vous pouvez vérifier qu'il existe déjà ou NON
IF OBJECT_ID ('tempdb..#TempLetters') is not null
drop table #TempLetters
SELECT col1,col2,1 AS Type, LettersCount
INTO #TempLetters FROM tblData
-- To get last 4 weeks Letters count
INSERT INTO #TempLetters
SELECT col1,col2,2 AS Type, LettersCount
FROM tblData
-- To get month wise Letters count
INSERT INTO #TempLetters
SELECT col1,col2,3 AS Type, LettersCount
FROM tblData
L'instruction SELECT INTO
peut également être utilisée pour créer une nouvelle table vide à l'aide du schéma d'un autre select * into tablename from ..
heretablename
table ne doit pas exister.
Changez votre insert comme ceci:
SELECT col1,
col2,
1 AS Type,
LettersCount
INTO #temp
FROM tblData
-- To get last 4 weeks Letters count
INSERT INTO #temp
SELECT col1,col2,2 AS Type,LettersCount
FROM tblData
-- To get month wise Letters count
INSERT INTO #temp
SELECT col1,col2,3 AS Type,LettersCount
FROM tblData
Créez une fois la table temporaire, puis insérez-la dans les deux autres instructions SELECT:
SELECT col1, col2, 1 AS Type, LettersCount
INTO #temp
FROM tblData;
INSERT INTO #temp
SELECT col1, col2, 2 AS Type, LettersCount
FROM tblData;
INSERT INTO #temp
SELECT col1, col2, 3 AS Type, LettersCount
FROM tblData;
Pourquoi ne pas écrire une seule instruction insert et unir les tables avant insertion
with A as
(
-- To get last 10 Days Letters count
SELECT col1,col2,1 AS Type, LettersCount
FROM tblData
union all
-- To get last 4 weeks Letters count
SELECT col1,col2,2 AS Type, LettersCount
FROM tblData
union all
-- To get month wise Letters count
SELECT col1,col2,3 AS Type, LettersCount
FROM tblData
)
select col1, col2, Type, LettersCount
INTO #temp
FROM A
Cela vous aidera à ajouter plus de tables dans la sélection facilement si vous en avez besoin, car vous n'aurez plus besoin d'instructions insert pour les insérer.
L'erreur se produit car la première instruction select into crée la table et que les deuxième et troisième tentatives tentent de la recréer.
Modifiez les deuxième et troisième requêtes en:
insert into #temp
select..