আমি কেন পাব "পদ্ধতিটি 'এনটেক্সট / এনসিআর / এনভারচার' টাইপের প্যারামিটার '@ স্টেটমেন্ট' আশা করে। আমি যখন sp_executesql ব্যবহার করার চেষ্টা করব?


96

কেন আমি এই ত্রুটি পেতে পারি

পদ্ধতিটি 'এনটেক্সট / এনসিআর / এনভারচার' টাইপের প্যারামিটার 'স্টেটমেন্ট' আশা করে।

আমি কখন ব্যবহার করার চেষ্টা করব sp_executesql?


4
আপনি কীভাবে এটি কার্যকর করার চেষ্টা করছেন? টি-এসকিউএল এ? একটি প্রোগ্রাম থেকে? আপনি প্রয়োজনীয় "@ স্টেটমেন্ট" প্যারামিটারটি পাস করছেন?
— ম্যাট হ্যামিল্টন

উত্তর:


218

আপনি যখন VVARAR বিবৃতিতে sp_executesql কল করছেন এমন শব্দগুলি যখন এটি এনভিচারার হওয়া দরকার।

যেমন এটি ত্রুটিটি দেবে কারণ @ এসকিউএলকে এনভিচারার হওয়া দরকার be

DECLARE @SQL VARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL

সুতরাং:

DECLARE @SQL NVARCHAR(100)
SET @SQL = 'SELECT TOP 1 * FROM sys.tables'
EXECUTE sp_executesql @SQL

এটি কাজ করে, তবে অন্য উত্তরটি (ড্যানিয়েল রেনশোর কাছ থেকে) বেশিরভাগ সময় ওয়ে useful (যেহেতু এটির অর্থহীন পরিবর্তনশীল ঘোষণার দরকার নেই)
— ব্রোনডাহাল

23

সমাধানটি হ'ল উভয় প্রকারের এবং এসকিউএল স্ট্রিংয়ের সামনে এটি একটি ডাবল-বাইট চরিত্রের স্ট্রিং হিসাবে চিহ্নিত করা উচিত:

DECLARE @SQL NVARCHAR(100) 
SET @SQL = N'SELECT TOP 1 * FROM sys.tables' 
EXECUTE sp_executesql @SQL

0

আমি আর একটি ছোটখাটো বিবরণ মিস করেছি: আমি এনভিসার্চের পিছনে বন্ধনী "(100)" ভুলে গেছি।

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