sp_execute 'int' টাইপের প্যারামিটার '@ হ্যান্ডল' প্রত্যাশা করে


9

আমার গন্তব্য ডেটাবেজে কোনও সারণী উপস্থিত থাকলে আমি একটি সঞ্চিত পদ্ধতিতে চেক করার চেষ্টা করছি। যদি এটি না হয় তবে উত্স ডাটাবেস থেকে তথ্য_সেমিমা সারণী ব্যবহার করে আমি সারণী তৈরি করব। যাইহোক আমি যখন sp_execute ব্যবহার করার চেষ্টা করি এবং টেবিলটি উপস্থিত থাকে তবে ফিরিয়ে আনতে আমি ত্রুটিটি পেয়েছি প্রক্রিয়াটি 'int' টাইপের প্যারামিটার '@ হ্যান্ডল' প্রত্যাশা করে।

আমি @ হ্যান্ডল প্যারামিটার ব্যবহার করছি না। কেউ আমাকে বলতে পারেন যে এই ত্রুটিটির অর্থ কী এবং কেন আমি তা পাচ্ছি? আমার কোডটির প্রাসঙ্গিক অংশটি নীচে।

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কি ফোন করার মানে ছিল ?
ফিলি

ভেরিয়েবলটি @TableNotExistsOutএসকিউএল পাঠ্যের মধ্যে ভুলভাবে বানান করা হয়।
জন সেগেল

উত্তর:


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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.