Tôi đang cố kiểm tra một thủ tục được lưu trữ nếu một bảng tồn tại trong cơ sở dữ liệu đích của tôi. Nếu không thì tôi sẽ tạo bảng sử dụng các bảng information_schema từ cơ sở dữ liệu nguồn. Tuy nhiên, khi tôi sử dụng sp_execute để thử và mang lại nếu bảng tồn tại, tôi nhận được lỗi Quy trình mong đợi tham số '@handle' của loại 'int'.
Tôi không sử dụng tham số @handle. Ai đó có thể cho tôi biết lỗi này có nghĩa là gì và tại sao tôi nhận được nó không? Phần liên quan của mã của tôi là dưới đây.
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
Biến
—
Jon Seigel
@TableNotExistsOut
được viết sai chính tả trong văn bản SQL.
sp_executesql
chứ không phảisp_execute
?