J'ai développé le code suivant:
CREATE PROCEDURE [dbo].[Test01] AS BEGIN SELECT * FROM TestTable END CREATE PROCEDURE [dbo].[Test02] AS BEGIN DECLARE @tmp TABLE ( TestID int, Test nvarchar(100), ) INSERT INTO @tmp EXEC Test01 SELECT COUNT(*) FROM @tmp END
Mais si j'ajoute ou supprime une colonne sur TestTable
je dois modifier @tmp
sinon le résultat est:
Le nom de la colonne ou le nombre de valeurs fournies ne correspond pas à la définition de la table
Comment puis-je résoudre ce problème?
Essayez de spécifier les colonnes manuellement:
SELECT a, b FROM TestTable
et
INSERT INTO @tmp (a, b)
Cela devrait corriger l'erreur que vous avez mentionnée.
Mon premier commentaire serait que SELECT *
est mal vu, sauf si vous savez ce que vous faites. Je déconseille fortement dans votre cas d'utilisation particulier, précisément parce que cela peut vous mettre dans le pésortingn que vous avez identifié.
Dans votre cas particulier, pour le SP spécifique écrit, vous n'avez pas utilisé SET NOCOUNT ON, vous pouvez donc récupérer le nombre en utilisant
SELECT @@ROWCOUNT
Mais comme l'a commenté Martin, c'est juste un exemple de code que vous avez jeté set. Sinon, pourquoi même utiliser 2 SP.