sp_execute को 'int' प्रकार के '@handle' पैरामीटर की उम्मीद है


9

यदि मेरी तालिका डेटाबेस में मौजूद है, तो मैं संग्रहीत प्रक्रिया में जांच करने का प्रयास कर रहा हूं। यदि ऐसा नहीं होता है तो मैं स्रोत डेटाबेस से 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

4
क्या आपको कॉल करने के sp_executesqlबजाय मतलब था sp_execute?
फिलु

चर @TableNotExistsOutSQL पाठ के भीतर गलत तरीके से लिखा गया है।
जॉन सीगल

जवाबों:


11

मुझे लगता है कि आप का उपयोग करने का मतलब है sp_executesql:

EXEC sp_Executesql @SQL, @Parameters, @SourceTableIN = @SourceTable, @TableNotExistsOut = @TableNotExists 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'

वह होना चाहिए @TableNotExistsOUT

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.