je une procédure stockée avec parameter1
et parameter2
procédure stockée SQL Server - refactorisation
intérieur de la procédure stockée, je crée une table temporaire
CREATE TABLE [dbo].#Temp
(
[Item_ID] [int] NOT NULL,
[Item] [nvarchar](255) NULL,
[FIELD_1] [float] NULL,
[FIELD_2] [float] NULL
CONSTRAINT [PK___Temp] PRIMARY KEY CLUSTERED
(
[Item_ID] ASC
)
Insérez ensuite la valeur à la table temporaire.
INSERT INTO [dbo].#Temp(
[Item_ID]
,[Item]
,[FIELD_1]
,[FIELD_2]
)SELECT DISTINCT
1
,'Item Description'
,(SELECT Field_Name FROM NewTable
WHERE Item_type = 'Middle'
AND param1 = @Parameter1
AND param2 = @Parameter2
AND STAFF_Type = 'Staff1'
AND Entity_Type = 'Entity1'
)
,(SELECT Field_Name FROM NewTable
WHERE Sch_type = 'High'
AND param1 = @Parameter1
AND param2 = @Parameter2
AND STAFF_Type = 'Staff1'
AND Entity_Type = 'Entity1'
)
INSERT INTO [dbo].#Temp(
[Item_ID]
,[Item]
,[FIELD_1]
,[FIELD_2]
)SELECT DISTINCT
2
,'Another Item Description'
,(SELECT Field_Name FROM NewTable
WHERE Item_type = 'Middle'
AND param1 = @Parameter1
AND param2 = @Parameter2
AND STAFF_Type = 'Staff1'
AND Entity_Type = 'Entity2'
)
,(SELECT Field_Name FROM NewTable
WHERE Sch_type = 'High'
AND param1 = @Parameter1
AND param2 = @Parameter2
AND STAFF_Type = 'Staff1'
AND Entity_Type = 'Entity2'
)
ainsi de suite. Ensuite, sélectionnez la valeur de la table temporaire et déposez la table temporaire.
Je n'ai pas utilisé UDF et je me demande si cela pourrait être refactorisé pour être simple en utilisant UDF. tout exemple et/ou suggestion sont grandement appréciés.
Pourquoi diable les gens ne se tournent-ils pas vers les CTE face à un problème? Ils résolvent tellement. – ShellNinja