sql ফাংশন বনাম এসকিউএল সার্ভারে সংরক্ষিত প্রসেসর




sql-server tsql (15)

আমি বেশ কিছুক্ষণের জন্য ফাংশন এবং সংরক্ষিত পদ্ধতি শিখছি কিন্তু আমি কখন এবং কখন কোনও ফাংশন বা সংরক্ষিত পদ্ধতি ব্যবহার করতে পারি তা আমি জানি না। তারা আমাকে একইরকম মনে করে, কারণ আমি তার সম্পর্কে নবাগত নই।

কেউ আমাকে বলতে পারেন কেন?


আমি বুঝতে পারছি এটি একটি পুরানো প্রশ্ন, কিন্তু আমি কোনও উত্তরটিতে উল্লেখযোগ্য একটি গুরুত্বপূর্ণ দিক দেখছি না: প্রশ্নবিদ্ধ পরিকল্পনাটিতে সূচিত করা হয়েছে।

কাজ হতে পারে ...

  1. স্কালে:

    CREATE FUNCTION ... RETURNS scalar_type AS BEGIN ... END

  2. বহু বিবৃতি টেবিল মূল্যবান:

    CREATE FUNCTION ... RETURNS @r TABLE(...) AS BEGIN ... END

  3. ইনলাইন টেবিল মূল্যবান:

    CREATE FUNCTION ... RETURNS TABLE AS RETURN SELECT ...

তৃতীয় ধরনের (ইনলাইন টেবিল-মূল্যবান) কোয়েরি অপ্টিমাইজারটি মূলত (প্যারামেট্রিজড) মতামতগুলির দ্বারা চিকিত্সা করা হয়, যার অর্থ আপনার প্রশ্নের থেকে ফাংশনটির উল্লেখ করাটি ফাংশনের এসকিউএল শরীরের অনুলিপি করা (আসলে কপি-পেস্টিং ব্যতীত) নিম্নলিখিত সুবিধা থেকে:

  • ক্যোয়ারী প্ল্যানার ইনলাইন ফাংশনটির কার্যকরকরণের মতো অপ্টিমাইজ করতে পারে যেমন এটি অন্য কোনও সাব-ক্যোয়ারী (উদাহরণস্বরূপ অব্যবহৃত কলামগুলি মুছে ফেলুন, পূর্বাভাস হ্রাস করুন, বিভিন্ন JOIN কৌশলগুলি চয়ন করুন ইত্যাদি)।
  • কয়েকটি ইনলাইন ফাংশনকে একত্রিত করার ফলে এটি প্রথমটির থেকে পরবর্তীটিকে ফিরিয়ে দেওয়ার আগে প্রথমটির ফলাফলটি সম্পাদন করার প্রয়োজন হয় না।

উপরে সম্ভাব্য উল্লেখযোগ্য কর্মক্ষমতা সঞ্চয় হতে পারে, বিশেষ করে যখন ফাংশন একাধিক স্তর মিশ্রন।

দ্রষ্টব্য: এসকিউএল সার্ভার 2019 মনে করে স্কলার ফাংশন কিছু ফর্ম পরিচয় করিয়ে দেবে।


  • কার্যকারিতাগুলি এমন কোনও বিবৃতিতে ব্যবহার করা যেতে পারে যেখানে প্রক্রিয়াগুলি করতে পারে না।

  • সংরক্ষিত পদ্ধতি ইনপুট এবং আউটপুট পরামিতি উভয় নেয় তবে ফাংশন শুধুমাত্র ইনপুট পরামিতি লাগে।

  • ফাংশন টাইপ টেক্সট, ntext, ইমেজ এবং টাইমস্ট্যাম্পের মানগুলি ফেরত দিতে পারে না যেখানে প্রক্রিয়াগুলি করতে পারে।

  • ফাংশন ব্যবহার করা যেতে পারে ব্যবহারকারীর ডেটাটাইপ টেবিল তৈরি করতে কিন্তু পদ্ধতিগুলি করতে পারে না।

*** যেমন: table <tablename>(name varchar(10),salary getsal(name))

এখানে হিউসাল একটি ব্যবহারকারী সংজ্ঞায়িত ফাংশন যা একটি বেতন টাইপ প্রদান করে, যখন টেবিল তৈরি হয়, কোনও স্টোরেজ বেতন প্রকারের জন্য বরাদ্দ করা হয় না এবং পায়চারি ফাংশনটিও কার্যকর হয় না, তবে যখন আমরা এই টেবিলে কিছু মান নিয়ে আসি, তখন হেসাল ফাংশনটি কার্যকর হয় এবং রিটার্ন টাইপ ফলাফল সেট হিসাবে ফিরে।


ফাংশন এবং সংরক্ষিত পদ্ধতি পৃথক উদ্দেশ্যে পরিবেশন করা। যদিও এটি সেরা উপায়ে নয় তবে কার্যকরীভাবে যে কোনও ফাংশন ভাষা হিসাবে আপনি যে কোনও ফাংশন ব্যবহার করতে পারেন, তবে সংরক্ষণ করা প্রসেসগুলি পৃথক প্রোগ্রাম বা ব্যাচ স্ক্রিপ্টের মতো বেশি।

ফাংশন সাধারণত একটি আউটপুট এবং বিকল্পভাবে ইনপুট আছে। আউটপুটটি তখন অন্য ফাংশনে ইনপুট হিসাবে ব্যবহার করা যেতে পারে (একটি SQL সার্ভার যা ডেটাডাইফ, লেন, ইত্যাদি অন্তর্নির্মিত) বা SQL সার্ভারের পূর্বরূপ হিসাবে - উদাহরণস্বরূপ, SELECT a, b, dbo.MyFunction(c) FROM table বা SELECT a, b, c FROM table WHERE a = dbo.MyFunc(c)

সঞ্চিত প্রসেসগুলি একটি লেনদেনের মধ্যে একত্রে এসকিউএল প্রশ্নগুলি এবং বাইরের বিশ্বের সাথে ইন্টারফেস সংযুক্ত করতে ব্যবহার করা হয়। যেমন ADO.NET, ফ্রেমওয়ার্কগুলি সরাসরি একটি ফাংশন কল করতে পারে না, তবে তারা সরাসরি সংরক্ষিত প্রসেস কল করতে পারে।

কারনগুলির মধ্যে একটি লুকানো বিপদ রয়েছে যদিও: তাদের অপব্যবহার করা যেতে পারে এবং খারাপ কর্মক্ষমতা সম্পর্কিত সমস্যাগুলির কারণ হতে পারে: এই প্রশ্নটি বিবেচনা করুন:

SELECT * FROM dbo.MyTable WHERE col1 = dbo.MyFunction(col2)

যেখানে MyFunction হিসাবে ঘোষণা করা হয়:

CREATE FUNCTION MyFunction (@someValue INTEGER) RETURNS INTEGER
AS
BEGIN
   DECLARE @retval INTEGER

   SELECT localValue 
      FROM dbo.localToNationalMapTable
      WHERE nationalValue = @someValue

   RETURN @retval
END

এখানে কী ঘটেছে যে ফাংশন MyFunction টেবিল MyTable প্রতিটি সারির জন্য বলা হয়। যদি MyTable এর 1000 সারি থাকে তবে এটি ডাটাবেসের বিরুদ্ধে 1000 টি অতিরিক্ত তথ্য। একইভাবে, যদি কলাম স্পিকে নির্দিষ্ট করা থাকে তবে ফাংশনটি বলা হয়, তবে ফাংশনটিকে SELECT দ্বারা ফেরত প্রতিটি সারির জন্য বলা হবে।

তাই আপনি সতর্কতা লেখার ফাংশন হতে হবে না। যদি আপনি একটি ফাংশনে কোনও টেবিলে থেকে নির্বাচন করেন তবে আপনাকে নিজেকে জিজ্ঞাসা করতে হবে যে এটি কীভাবে অভিভাবক সংরক্ষিত প্রসেস বা অন্য কোনও SQL নির্মাণে (যেমন CASE ... JOEN ... ELSE ... শেষ).


এখানে সংরক্ষিত পদ্ধতির উপর ফাংশন পছন্দ করতে একটি বাস্তব কারণ। যদি আপনার একটি সংরক্ষিত পদ্ধতি রয়েছে যা অন্য কোন সংরক্ষিত পদ্ধতির ফলাফলের প্রয়োজন হয় তবে আপনাকে একটি সন্নিবেশ-কার্যকর বিবৃতি ব্যবহার করতে হবে। এর অর্থ হল আপনি টেম্প টেবিল তৈরি করতে এবং টেম্প টেবিলে সংরক্ষিত পদ্ধতির ফলাফল সন্নিবেশ করার জন্য একটি কার্যকর বিবৃতি ব্যবহার করতে হবে। এটা নোংরা। এর সাথে একটি সমস্যা হল যে insert-execs নিস্তেজ করা যাবে না

যদি আপনি সংরক্ষণ করা পদ্ধতিগুলির সাথে আটকে থাকেন যেগুলি অন্য সঞ্চিত পদ্ধতিগুলিকে কল করে তবে আপনি এটিকে চালাতে পারেন। ন্যস্ত স্টোরেড পদ্ধতিটি কেবলমাত্র একটি ডেটাসেট ফেরত পাঠায়, এটি একটি টেবিল-মূল্যযুক্ত ফাংশন দিয়ে প্রতিস্থাপিত হতে পারে এবং আপনি আর এই ত্রুটিটি পাবেন না।

( এই আরেকটি কারণ আমরা ডাটাবেসের বাইরে ব্যবসা যুক্তি রাখা উচিত )


এসপি এবং ইউডিএফ মধ্যে পার্থক্য নীচে তালিকাভুক্ত করা হয়:

+---------------------------------+----------------------------------------+
| Stored Procedure (SP)           | Function (UDF - User Defined           |
|                                 | Function)                              |
+---------------------------------+----------------------------------------+
| SP can return zero , single or  | Function must return a single value    |
| multiple values.                | (which may be a scalar or a table).    |
+---------------------------------+----------------------------------------+
| We can use transaction in SP.   | We can't use transaction in UDF.       |
+---------------------------------+----------------------------------------+
| SP can have input/output        | Only input parameter.                  |
| parameter.                      |                                        |
+---------------------------------+----------------------------------------+
| We can call function from SP.   | We can't call SP from function.        |
+---------------------------------+----------------------------------------+
| We can't use SP in SELECT/      | We can use UDF in SELECT/ WHERE/       |
| WHERE/ HAVING statement.        | HAVING statement.                      |
+---------------------------------+----------------------------------------+
| We can use exception handling   | We can't use Try-Catch block in UDF.   |
| using Try-Catch block in SP.    |                                        |
+---------------------------------+----------------------------------------+

              STORE PROCEDURE                 FUNCTION (USER DEFINED FUNCTION)    
 * Procedure can return 0, single or   | * Function can return only single value   
   multiple values.                    |
                                       |
 * Procedure can have input, output    | * Function  can have only input 
   parameters.                         |   parameters.         
                                       |
 * Procedure cannot be called from     | * Functions can be called from 
   function.                           |   procedure.
                                       |
 * Procedure allows select as well as  | * Function allows only select statement 
   DML statement in it.                |   in it.
                                       |
 * Exception can be handled by         | * Try-catch block cannot be used in a 
   try-catch block in a procedure.     |   function.
                                       |
 * We can go for transaction management| * We can't go for transaction 
   in procedure.                       |   management in function.
                                       |
 * Procedure cannot be utilized in a   | * Function can be embedded in a select 
   select statement                    |   statement.
                                       |
 * Procedure can affect the state      | * Function can not affect the state 
   of database means it can perform    |   of database means it can not    
   CRUD operation on database.         |   perform CRUD operation on 
                                       |   database. 
                                       |
 * Procedure can use temporary tables. | * Function can not use 
   temporary tables                    |   temporary tables. 
                                       |
 * Procedure can alter the server      | * Function can not alter the  
   environment parameters.             |   environment parameters.
                                       |   
 * Procedure can use when we want      | * Function can use when we want
   instead is to group a possibly-     |   to compute and return a value
   complex set of SQL statements.      |   for use in other SQL 
                                           statements.

নিম্নলিখিত পয়েন্টগুলি কী সহায়তা করতে পারে তা কখন ব্যবহার করতে হবে তা নির্ধারণ করতে-

  1. সংরক্ষণ করা পদ্ধতি একটি টেবিল পরিবর্তনশীল যেখানে ফাংশন করতে পারেন না ফিরে আসতে পারে।

  2. সার্ভার পরিবেশ পরামিতিগুলি পরিবর্তন করার জন্য আপনি সংরক্ষণ করা পদ্ধতিগুলি ব্যবহার করতে পারেন যেখানে ফাংশনগুলি ব্যবহার করা যায় না।

চিয়ার্স


মৌলিক পার্থক্য

ফাংশনটি একটি মান প্রদান করতে হবে তবে সংরক্ষণ করা পদ্ধতিতে এটি ঐচ্ছিক (প্রক্রিয়াটি শূন্য বা এন মানগুলি ফেরত দিতে পারে)।

কার্যকারিতাগুলির জন্য কেবলমাত্র ইনপুট প্যারামিটার থাকতে পারে তবে প্রক্রিয়াগুলিতে ইনপুট / আউটপুট পরামিতি থাকতে পারে।

ফাংশনটি একটি ইনপুট প্যারামিটার এটি বাধ্যতামূলক করে তবে সঞ্চয় করা পদ্ধতিতে এন ইনপুট প্যারামিটারগুলি নিতে পারে ..

কার্যকারিতা থেকে ফাংশনগুলি বলা যেতে পারে তবে প্রক্রিয়াগুলি ফাংশন থেকে কল করা যাবে না।

অগ্রিম পার্থক্য

পদ্ধতিটি নির্বাচন করে ডিএমএল (ইনসার্ট / আপডেট / ডেলিটি) বিবৃতিটি নির্বাচন করে এবং ফাংশনটি কেবলমাত্র SELECT বিবৃতিটিকে অনুমোদন করে।

পদ্ধতিগুলি একটি নির্বাচন বিবৃতিতে ব্যবহার করা যাবে না তবে ফাংশনটি একটি নির্বাচন বিবৃতিতে এম্বেড করা যেতে পারে।

স্টোরেড প্রসেসগুলি এসকিউএল স্টেটমেন্টে যেখানে কোথাও / হাইভিং / সিলেক্ট সেকশনে ব্যবহার করা যাবে না ফাংশন হতে পারে।

টেবিল ফিরে যে ফাংশন অন্য rowset হিসাবে গণ্য করা যেতে পারে। এই অন্যান্য টেবিল সঙ্গে যোগদান ব্যবহার করা যেতে পারে।

ইনলাইন ফাংশন যদিও প্যারামিটার নিতে পারে এবং JOINs এবং অন্যান্য Rowset ক্রিয়াকলাপগুলিতে এটি ব্যবহার করা যেতে পারে।

অ্যাক্সেসেশনটি ট্র্যাক-ক্যাচ ব্লক দ্বারা একটি পদ্ধতিতে পরিচালনা করা যেতে পারে, তবে ট্রাই-ক্যাচ ব্লকটি ফাংশনে ব্যবহার করা যাবে না।

আমরা পদ্ধতিতে ট্রানজেকশন পরিচালনার জন্য যেতে পারি, তবে আমরা ফাংশনে যেতে পারছি না।

source


সংরক্ষিত নীতিমালা:

  • এসকিউএল সার্ভারে একটি ক্ষুদ্র প্রোগ্রাম মত।
  • একটি নির্বাচিত বিবৃতি হিসাবে সহজ হতে পারে, অথবা একটি দীর্ঘ স্ক্রিপ্ট হিসাবে জটিল যা সংযোজন, মুছে ফেলা, আপডেট, এবং / অথবা ডাটাবেসের মধ্যে একাধিক সারণিতে ডেটা পড়তে পারে।
  • (লুপ এবং কার্সারগুলি বাস্তবায়ন করতে পারে, যা উভয়ই আপনাকে ডেটাতে সারি ক্রিয়াকলাপগুলির মাধ্যমে ছোট ফলাফল বা সারির সাথে কাজ করতে দেয়।)
  • EXEC বা EXECUTE বিবৃতি ব্যবহার করে বলা উচিত।
  • টেবিল ভেরিয়েবলগুলি ফেরত দেয়, কিন্তু আমরা OUT প্যারামিটার ব্যবহার করতে পারি না।
  • লেনদেন সমর্থন করে।

ফাংশন:

  • ডাটাবেস রেকর্ড আপডেট, মুছে ফেলা, বা যোগ করতে ব্যবহার করা যাবে না।
  • শুধু একটি একক মান বা একটি টেবিল মান প্রদান করে।
  • শুধুমাত্র রেকর্ড নির্বাচন করতে ব্যবহার করা যেতে পারে। যাইহোক, এটি স্ট্যান্ডার্ড এসকিউএল থেকে খুব সহজে বলা যেতে পারে, যেমন:

    SELECT dbo.functionname('Parameter1')

    অথবা

    SELECT Name, dbo.Functionname('Parameter1') FROM sysObjects
  • সহজ পুনঃব্যবহারযোগ্য নির্বাচন অপারেশন জন্য, ফাংশন কোড সহজ করতে পারেন। শুধু আপনার ফাংশন JOIN ক্লজ ব্যবহার সতর্ক থাকুন। যদি আপনার JOIN এবং আপনি এটি অন্য একাধিক বিবৃতি থেকে কল করেন যা একাধিক ফলাফল প্রদান করে তবে ফাংশন কলটি ফলাফল সেটটিতে ফিরে আসা প্রতিটি লাইনগুলির জন্য একসঙ্গে ঐ টেবিলগুলিতে যোগ দেবে। যদিও তারা কিছু যুক্তি সরল করার জন্য সহায়ক হতে পারে, তবে তারা সঠিকভাবে ব্যবহার না করলেও এটি একটি কর্মক্ষমতা বাধা হতে পারে।

  • OUT পরামিতি ব্যবহার করে মান ফেরত দেয়।
  • লেনদেন সমর্থন করে না।

যখন আপনি গণনা করতে চান এবং অন্য এসকিউএল বিবৃতিগুলিতে ব্যবহারের জন্য একটি মান ফেরত চান তখন একটি ব্যবহারকারী সংজ্ঞায়িত ফাংশন লিখুন; পরিবর্তে একটি SQL সার্ভারের সম্ভবত জটিল সেট গ্রুপ করতে চান যখন একটি সংরক্ষিত পদ্ধতি লিখুন। এই সব পরে, দুটি চমত্কার ব্যবহার ক্ষেত্রে হয়!


একটি একক মান ফেরত যে ফাংশন দিয়ে শুরু করুন। চমৎকার জিনিস আপনি ফাংশনটিতে ঘন ঘন ব্যবহৃত কোডটি রাখতে এবং ফলাফল সেটে কলাম হিসাবে তাদের ফিরিয়ে আনতে পারেন।

তারপরে, আপনি শহরগুলির প্যারামিটারযুক্ত তালিকাগুলির জন্য একটি ফাংশন ব্যবহার করতে পারেন। dbo.GetCitiesIn ("NY") একটি টেবিল প্রদান করে যা একটি যোগদান হিসাবে ব্যবহার করা যেতে পারে।

এটি কোড সংগঠনের একটি উপায়। কিছু পুনঃব্যবহারযোগ্য এবং যখন এটি সময় অপচয় হয় তা জানা কিছু শুধুমাত্র ট্রায়াল এবং ত্রুটি এবং অভিজ্ঞতা মাধ্যমে অর্জিত হয়।

এছাড়াও, ফাংশন SQL সার্ভারে একটি ভাল ধারণা। তারা দ্রুত এবং বেশ শক্তিশালী হতে পারে। ইনলাইন এবং সরাসরি নির্বাচন। অতিরিক্ত ব্যবহার না সতর্ক।


সংরক্ষিত পদ্ধতি এবং ব্যবহারকারী-সংজ্ঞায়িত ফাংশন মধ্যে পার্থক্য:

  • সংরক্ষিত বিবৃতি নির্বাচন বিবৃতি ব্যবহার করা যাবে না।
  • সংরক্ষিত পদ্ধতি ডিফার্ড নাম রেজল্যুশন সমর্থন করে।
  • সংরক্ষিত পদ্ধতি সাধারণত ব্যবসা যুক্তি সম্পাদনের জন্য ব্যবহার করা হয়।
  • সংরক্ষিত পদ্ধতি কোনো ডাটাটাইপ ফেরত দিতে পারেন।
  • সংরক্ষিত পদ্ধতি ব্যবহারকারী সংজ্ঞায়িত ফাংশন চেয়ে ইনপুট প্যারামিটার বেশি সংখ্যক গ্রহণ করতে পারে। সংরক্ষিত পদ্ধতি পর্যন্ত 21,000 ইনপুট পরামিতি থাকতে পারে।
  • সংরক্ষিত পদ্ধতি ডাইনামিক এসকিউএল চালানো যাবে।
  • সংরক্ষিত পদ্ধতি ত্রুটি হ্যান্ডলিং সমর্থন।
  • অ-নির্ধারণমূলক ফাংশন সংরক্ষিত পদ্ধতিতে ব্যবহার করা যেতে পারে।
  • ব্যবহারকারী-সংজ্ঞায়িত ফাংশন নির্বাচন বিবৃতি ব্যবহার করা যেতে পারে।
  • ব্যবহারকারী-সংজ্ঞায়িত ফাংশন Deferred নাম রেজল্যুশন সমর্থন করে না।
  • ব্যবহারকারী-সংজ্ঞায়িত ফাংশন সাধারণত computations জন্য ব্যবহার করা হয়।
  • ব্যবহারকারী-সংজ্ঞায়িত ফাংশন একটি মান ফিরে করা উচিত।
  • ব্যবহারকারী-সংজ্ঞায়িত ফাংশন চিত্র ফেরত দিতে পারে না।
  • ব্যবহারকারী-সংজ্ঞায়িত ফাংশন সঞ্চিত পদ্ধতির চেয়ে ইনপুট পরামিতিগুলির ছোট সংখ্যা গ্রহণ করে। UDFs পর্যন্ত 1,023 টি ইনপুট প্যারামিটার থাকতে পারে।
  • অস্থায়ী টেবিল ব্যবহারকারী-সংজ্ঞায়িত ফাংশন ব্যবহার করা যাবে না।
  • ব্যবহারকারী-সংজ্ঞায়িত ফাংশন গতিশীল এসকিউএল চালানো যাবে না।
  • ব্যবহারকারী-সংজ্ঞায়িত ফাংশন ত্রুটি হ্যান্ডলিং সমর্থন করে না। RAISEERROR অথবা @@ERROR অনুমোদিত নয়।
  • অ-নির্ধারণমূলক ফাংশন UDF তে ব্যবহার করা যাবে না। উদাহরণস্বরূপ, GETDATE() ব্যবহার করা যাবে না।

কার্সারগুলির মতো SQL সার্ভার ফাংশনগুলি আপনার শেষ অস্ত্র হিসাবে ব্যবহার করা হয়! তারা কর্মক্ষমতা সমস্যা আছে এবং তাই একটি টেবিল মূল্যবান ফাংশন ব্যবহার যতটা সম্ভব এড়াতে হবে। কর্মক্ষমতা সম্পর্কে কথা বলা হচ্ছে একটি টেবিল সম্পর্কে কথা বলা যা 1000,000 এর বেশি রেকর্ড মধ্যম-শ্রেণীর হার্ডওয়্যারে সার্ভারে হোস্ট করা হয়; অন্যথায় আপনি ফাংশন দ্বারা সৃষ্ট কর্মক্ষমতা আঘাত সম্পর্কে চিন্তা করতে হবে না।

  1. কোনও ফাংশন ব্যবহার করবেন না ফলাফল-একটি বাহ্যিক কোডে সেট করুন (যেমন ADO.Net)
  2. যতটা সম্ভব মতামত / সংরক্ষিত procs সংমিশ্রণ ব্যবহার করুন। আপনি DTA (ডেটাবেস টিউনিং অ্যাডভাইজার) এর পরামর্শগুলি ব্যবহার করে ভবিষ্যতে বর্ধিত কর্মক্ষমতা সংক্রান্ত সমস্যাগুলি থেকে পুনরুদ্ধার করতে পারেন (যেমন সূচিবদ্ধ মতামত এবং পরিসংখ্যান) - কখনও কখনও!

আরও রেফারেন্সের জন্য দেখুন: http://databases.aspfaq.com/database/should-i-use-a-view-a-stored-procedure-or-a-user-defined-function.html


কার্যাবলী গণনা করা হয় এবং SQL সার্ভারে স্থায়ী পরিবেশগত পরিবর্তনগুলি সম্পাদন করতে পারে না (অর্থাত কোন ইনসার্ট বা আপডেট বিবৃতি অনুমোদিত নয়)।

এটি একটি স্কলার মান প্রদান করে যদি একটি ফাংশন এসকিউএল বিবৃতিগুলিতে ইনলাইন ব্যবহার করা যেতে পারে, অথবা এটি একটি ফলাফল সেট প্রদান করলে যোগদান করা যেতে পারে।

মন্তব্য থেকে নোট মূল্য একটি বিন্দু, উত্তর সংক্ষিপ্তসার যা। @ সেনান কে অ্যান্ডারসনের ধন্যবাদ:

ফাংশনগুলি কম্পিউটার-বিজ্ঞান সংজ্ঞা অনুসরণ করে যাতে তারা একটি মান ফেরত দিতে পারে এবং প্যারামিটার হিসাবে প্রাপ্ত তথ্যগুলি পরিবর্তন করতে পারে (আর্গুমেন্ট)। কার্যাবলী কিছু পরিবর্তন করার অনুমতি দেওয়া হয় না, কমপক্ষে একটি পরামিতি থাকা আবশ্যক, এবং তারা অবশ্যই একটি মান প্রদান করতে হবে। সংরক্ষণ করা procs একটি পরামিতি আছে না, ডাটাবেস বস্তু পরিবর্তন করতে পারেন, এবং একটি মান ফেরত দিতে হবে না।


একটি ব্যবহারকারী নির্ধারিত ফাংশন একটি SQL সার্ভার প্রোগ্রামারের জন্য উপলব্ধ একটি গুরুত্বপূর্ণ সরঞ্জাম। আপনি এটি মত একটি এসকিউএল বিবৃতি ইনলাইন ব্যবহার করতে পারেন

SELECT a, lookupValue(b), c FROM customers 

যেখানে অনুসন্ধান lookupValue একটি UDF হবে। একটি সংরক্ষিত পদ্ধতি ব্যবহার করার সময় এই ধরনের কার্যকারিতা সম্ভব নয়। একই সময়ে আপনি একটি UDF এর ভিতরে নির্দিষ্ট কিছু করতে পারবেন না। এখানে উল্লেখিত মৌলিক বিষয় হলো ইউডিএফ এর:

  • স্থায়ী পরিবর্তন তৈরি করতে পারবেন না
  • তথ্য পরিবর্তন করতে পারবেন না

একটি সংরক্ষিত পদ্ধতি ঐ জিনিস করতে পারেন।

আমার জন্য একটি ইউডিএফ এর ইনলাইন ব্যবহার একটি ইউডিএফ এর সবচেয়ে গুরুত্বপূর্ণ ব্যবহার।





sql-function