Я намагаюся перевірити збережену процедуру, чи існує таблиця в моїй базі даних призначення. Якщо цього не відбудеться, я створять таблицю з використанням таблиць information_schema з вихідної бази даних. Однак, коли я використовую sp_execute, щоб спробувати повернути, якщо таблиця існує, я отримую помилку Процедура очікує параметр '@handle' типу 'int'.
Я не використовую параметр @handle. Хтось може сказати мені, що означає ця помилка і чому я її отримую? Невідповідна частина мого коду знаходиться нижче.
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
написана неправильно в тексті SQL.
sp_executesql
скоріше зателефонуватиsp_execute
?