यदि मेरी तालिका डेटाबेस में मौजूद है, तो मैं संग्रहीत प्रक्रिया में जांच करने का प्रयास कर रहा हूं। यदि ऐसा नहीं होता है तो मैं स्रोत डेटाबेस से info_schema तालिकाओं का उपयोग करते हुए तालिका बनाऊंगा। हालाँकि, जब मैं तालिका का उपयोग करने के लिए sp_execute का उपयोग करता हूं और यदि तालिका मौजूद है तो मुझे त्रुटि प्राप्त हो रही है प्रक्रिया '' 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
?