J'ai obtenu la procédure stockée suivante, mais je suis nouveau à T-SQL et pas très sûr de sa syntaxe. Est-ce que certains pourraient m'expliquer un peu?Est-ce que certains pourraient expliquer ce code TSQL pour moi?
Question:
- Que représente la syntaxe pour #tmp?
- Où est défini c dans c.RootCategoryId?
Voici le code:
ALTER PROCEDURE [dbo].[GetAllTopCategories]
@prewin7 bit
AS
SELECT * INTO #tmp FROM dbo.fnGetCategories(@prewin7)
SELECT
c.RootCategoryId CategoryId,
c.CategoryName + ' [' + CAST(g.DiagnosticCount AS nvarchar(max)) + ']' CategoryName,
@prewin7 as PreWin7
FROM (
SELECT
c.RootCategoryId CategoryId,
SUM(c.DiagnosticCount) DiagnosticCount
FROM #tmp c
GROUP BY c.RootCategoryId
) g
INNER JOIN #tmp c ON c.CategoryId = g.CategoryId
ORDER BY c.CategoryName
DROP TABLE #tmp
hmm ... la table drop n'est pas si redondante. Si ce code est exécuté par un serveur qui maintient une connexion ouverte, les tables temporaires peuvent s'accumuler. – gjvdkamp
@gjvdkamp - Les tables temporaires locales sont réellement supprimées lorsqu'un proc stocké se termine, si elles sont créées dans un proc stocké, plutôt que lorsque la connexion est fermée, donc il est toujours redondant. –