J'essaie de vérifier dans une procédure stockée si une table existe dans ma base de données de destination. Si ce n'est pas le cas, je vais créer la table en utilisant les tables information_schema de la base de données source. Cependant, lorsque j'utilise sp_execute pour essayer de ramener si la table existe, je reçois l'erreur La procédure attend le paramètre '@handle' de type 'int'.
Je n'utilise pas de paramètre @handle. Quelqu'un peut-il me dire ce que signifie cette erreur et pourquoi je la reçois? La partie pertinente de mon code est ci-dessous.
DECLARE @SQL NVARCHAR(MAX),
@Parameters NVARCHAR(4000),
@TableNotExists INT,
@SourceTable NVARCHAR(200),
@DestDB NVARCHAR(200)
BEGIN
SET @SourceTable = 'table'
SET @DestDB = 'database'
SET @Parameters = N'@SourceTableIN NVARCHAR(200), @TableNotExistsOut INT OUTPUT'
SET @SQL = N'USE [' + @DestDB + '] IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = ''BASE TABLE'' AND TABLE_NAME = @SourceTableIN)
BEGIN SET @TableNotExistOUT = 1 END'
EXEC sp_Execute @SQL, @Parameters, @SourceTableIN = @SourceTable, @TableNotExistsOUt = @TableNotExists OUTPUT
END
@TableNotExistsOut
n'est pas orthographiée correctement dans le texte SQL.
sp_executesql
plutôt quesp_execute
?