আমি কেন পাব "পদ্ধতিটি 'এনটেক্সট / এনসিআর / এনভারচার' টাইপের প্যারামিটার '@ স্টেটমেন্ট' আশা করে। আমি যখন 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.