Je souhaite créer une procédure stockée avec des paramètres dynamiques. L'un de ces paramètres est un type de tableComment utiliser dynamiquement le type de table dans T-SQL
CREATE TYPE [dbo].[IdTable] AS TABLE ([Id] [int] NULL)
GO
CREATE PROCEDURE [dbo].[SP_deleteCells]
@table IdTable READONLY,
@tableName NVARCHAR(50),
@fieldName NVARCHAR(50),
@result BIT OUTPUT
AS
DECLARE @SQL NVARCHAR(500);
SET @SQL='delete from TBL_CustomerTerminal where ID in (select ID from @table)'
EXEC (@SQL);
SET @result = @@ROWCOUNT;
Comment puis-je exec ce code sans erreur ?? En ce moment, je reçois:
doit déclarer la variable de table "@table"
Side note: vous devez ** ** pas utiliser le préfixe 'sp_' pour vos procédures stockées. Microsoft a [réservé ce préfixe pour son propre usage (voir * Naming Stored Procedures *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx), et vous courez le risque d'un conflit de noms dans le futur. [Il est également mauvais pour les performances de votre procédure stockée] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Il vaut mieux éviter simplement 'sp_' et utiliser autre chose comme préfixe - ou pas de préfixe du tout! –
Pourquoi utilisez-vous SQL dynamique ici du tout? Exécutez simplement l'instruction delete et oubliez le SQL dynamique. –
c'était dynamiquely du tout mais je remplace le champ statique pour le travail certainement – saeid