এসকিউএল সার্ভারে optionচ্ছিক পরামিতি সংরক্ষণ করা হয়েছে?


125

আমি এসকিউএল সার্ভার ২০০৮ সালে কিছু সঞ্চিত প্রক্স লিখছি, এবং ভাবছি এখানে hereচ্ছিক ইনপুট পরামিতিগুলির ধারণাটি কি সম্ভব?

আমি মনে করি যে আমি যে প্যারামিটারগুলি ব্যবহার করতে চাই না তার জন্য আমি সর্বদা NUL এ পাস করতে পারি, সঞ্চিত প্রকল্পের মানটি পরীক্ষা করতে পারি, সেখান থেকে জিনিসগুলি নিয়ে যাই, তবে ধারণাটি এখানে উপলভ্য থাকলে আমি আগ্রহী ছিলাম। ধন্যবাদ!


উত্তর:


201

আপনি এই মত ঘোষণা করতে পারেন

CREATE PROCEDURE MyProcName
    @Parameter1 INT = 1,
    @Parameter2 VARCHAR (100) = 'StringValue',
    @Parameter3 VARCHAR (100) = NULL
AS

/* check for the NULL / default value (indicating nothing was passed */
if (@Parameter3 IS NULL)
BEGIN
    /* whatever code you desire for a missing parameter*/
    INSERT INTO ........
END

/* and use it in the query as so*/
SELECT *
FROM Table
WHERE Column = @Parameter

যদি প্যারামিটারটি ইউনিক আইডেন্টিফায়ার টাইপ করে তবে কী হবে? প্রাক্তন। @ ইউজারআইডি অনন্য পরিচয়
আর কে শর্মা

1
যে কারও খুব অবাক হয় তার জন্য @ আর কে শর্মার জবাব দেওয়া - এটি অনন্য সনাক্তকারীদের সাথে একই কাজ করে works
rinukkusu

55

হ্যাঁ, তাই প্যারামিটারটি তেমনভাবে ঘোষণা করুন:

@Sort varchar(50) = NULL

এখন আপনাকে এমনকি প্যারামিটারটিও পাস করতে হবে না It এটি ডিফল্টরূপে NULL হয়ে যাবে (বা আপনি যেটি ডিফল্ট করতে চান)।


এমনকি আপনার প্রয়োজন নেই= NULL
ওএমজি পনিজ

3
আপনি কি নিশ্চিত যে আপনার এটির দরকার নেই?
মাইক কোল

43
ওএমজি পনিস, আপনি যদি <<NULL | কিছু ডিফল্ট মান> অন্তর্ভুক্ত না করেন তবে প্যারামিটারের প্রয়োজন হবে। আপনি এটিকে NULL হিসাবে পাস করতে পারেন, তবে তারপরে আপনি কেবল সেই লজিকটিকে অ্যাপ্লিকেশনগুলিতে স্থানান্তর করেন যা পদ্ধতি ব্যবহার করে।
অ্যারোন বার্ট্র্যান্ড

10
হারুনের বক্তব্য যুক্ত করা। আপনি যদি কোনও বিদ্যমান সঞ্চিত প্রোকেমে নতুন optionচ্ছিক পরামিতি যুক্ত করে থাকেন তবে "= NULL" ব্যবহার করা ভাল is কারণটি হ'ল, আপনি এই সমস্ত প্রকল্পটি কল করে এমন সমস্ত কোড সম্পর্কে সচেতন নাও হতে পারেন। অতএব, আপনি যদি "= NULL" ব্যবহার করে alচ্ছিক না করেন, তবে যে জায়গাগুলিতে আপনি কোনও মান দিয়ে যেতে পারেননি এমন জায়গাগুলির জন্য এটি ভেঙে যাবে।
ন্যানোনার্ড

ন্যানোনার্ড: ২০১৪ এবং সর্বোপরি আপনি একটি ডিফল্ট সেট করতে পারেন এবং আপনি যখন এই পরামিতিটি পাস না করেন তখন এটি এবং ত্রুটি না হয়ে যাবে। কমপক্ষে
সেভাবেই

0

কমপক্ষে 2014 এবং সর্বোপরি আপনি একটি ডিফল্ট সেট করতে পারেন এবং আপনি যখন প্যারামিটারটি পাস না করেন এটি তাত্ক্ষণিকভাবে এবং ত্রুটি নেবে। আংশিক উদাহরণ: তৃতীয় প্যারামিটারটি asচ্ছিক হিসাবে যুক্ত করা হয়েছে। শুধুমাত্র প্রথম দুটি পরামিতি সূক্ষ্মভাবে কাজ করে প্রকৃত প্রক্রিয়া সম্পাদন করে

exec getlist 47,1,0

create procedure getlist
   @convId int,
   @SortOrder int,
   @contestantsOnly bit = 0
as
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.