আমি বেশ কিছুদিন ধরে ফাংশন এবং সঞ্চিত পদ্ধতি শিখছি তবে কেন এবং কখন কোন ফাংশন বা সঞ্চিত পদ্ধতি ব্যবহার করা উচিত তা আমি জানি না। তারা আমার সাথে একই দেখাচ্ছে, কারণ আমি এ সম্পর্কে দম্পতি নবাগত।
কেউ আমাকে বলতে পারেন কেন?
আমি বেশ কিছুদিন ধরে ফাংশন এবং সঞ্চিত পদ্ধতি শিখছি তবে কেন এবং কখন কোন ফাংশন বা সঞ্চিত পদ্ধতি ব্যবহার করা উচিত তা আমি জানি না। তারা আমার সাথে একই দেখাচ্ছে, কারণ আমি এ সম্পর্কে দম্পতি নবাগত।
কেউ আমাকে বলতে পারেন কেন?
উত্তর:
ফাংশনগুলি গণিত মান হয় এবং স্থায়ী পরিবেশগত পরিবর্তন করতে পারে না SQL Server
(যেমন, কোনও INSERT
বা UPDATE
বিবৃতি অনুমোদিত নয়)।
একটি ফাংশন ইনলাইন ব্যবহার করা যেতে পারে SQL
যদি এটি কোনও স্কেলারের মান ফেরত দেয় বা কোনও ফলাফলের সেট দেয় তবে তাতে যোগ দেওয়া যায়।
মন্তব্যগুলি লক্ষ করার মতো একটি বিষয়, যা উত্তরটির সংক্ষিপ্তসার করে। @ সিয়ান কে অ্যান্ডারসনকে ধন্যবাদ:
ফাংশনগুলি কম্পিউটার-বিজ্ঞানের সংজ্ঞা অনুসরণ করে যে তারা অবশ্যই কোনও মূল্য ফেরত দেয় এবং পরামিতি (আর্গুমেন্ট) হিসাবে তারা প্রাপ্ত ডেটা পরিবর্তন করতে পারে না। ফাংশনগুলিকে কিছু পরিবর্তন করার অনুমতি নেই, কমপক্ষে একটি প্যারামিটার থাকতে হবে এবং তাদের অবশ্যই একটি মান ফেরত দিতে হবে। সঞ্চিত প্রকসগুলির একটি প্যারামিটার থাকতে হবে না, ডাটাবেস অবজেক্টগুলি পরিবর্তন করতে পারে এবং কোনও মান ফেরত দিতে হবে না।
কীভাবে SQL
স্টোর পদ্ধতি থেকে ফাংশন কল করা যায় এবং আমরা যখন সঞ্চিত পদ্ধতির পরিবর্তে কোনও ফাংশন ব্যবহার করি।
হাই বন্ধুরা, আজ আমরা কখন সঞ্চিত পদ্ধতি ব্যবহার করব এবং কখন ফাংশনটি ব্যবহার করব তা নিয়ে আলোচনা করব। সাধারণ দলে আপনি যদি কিছু মান গণনা করতে চান এবং এটি একটি একক মান ফেরত দেবে, সুতরাং এটির প্রয়োজন নেই:
https://programmingtechtutorial.blogspot.com/2020/01/when-use-storeprocedure-and-when-use.html
এসপি এবং ইউডিএফ মধ্যে পার্থক্য নীচে তালিকাভুক্ত করা হয়েছে:
+---------------------------------+----------------------------------------+
| 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. | |
+---------------------------------+----------------------------------------+
কার্যাদি এবং সঞ্চিত পদ্ধতি পৃথক উদ্দেশ্যে পরিবেশন করে। যদিও এটি সেরা উপমা নয়, ফাংশনগুলি আপনি যে কোনও প্রোগ্রামিং ভাষায় ব্যবহার করতে চাইছেন এমন কোনও ফাংশন হিসাবে আক্ষরিকভাবে দেখা যেতে পারে, তবে সঞ্চিত প্রকল্পগুলি পৃথক প্রোগ্রাম বা ব্যাচের স্ক্রিপ্টের মতো are
ফাংশনগুলির সাধারণত একটি আউটপুট থাকে এবং allyচ্ছিকভাবে ইনপুট থাকে। তারপরে আউটপুটটি অন্য ফাংশনের ইনপুট হিসাবে ব্যবহার করা যেতে পারে (একটি এসকিউএল সার্ভার অন্তর্নির্মিত যেমন ডেটডিইএফএফ, লেন, ইত্যাদি) বা এসকিউএল কোয়েরির প্রিকিকেট হিসাবে - যেমন, 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
এখানে যা ঘটে তা হ'ল মাই ফাংশনটি ফাংশনটি মাই টেবিলের টেবিলের প্রতিটি সারিটির জন্য ডাকা হয়। মাই টেবিলের যদি 1000 সারি থাকে, তবে এটি ডাটাবেসের বিরুদ্ধে আরও 1000 অ্যাড-হক প্রশ্ন রয়েছে। একইভাবে, কলাম স্পেসে নির্দিষ্ট করার পরে যদি ফাংশনটি কল করা হয়, তবে ফাংশনটি নির্বাচন করে প্রতিটি সারির জন্য নির্বাচন করবে called
সুতরাং আপনার যত্ন সহকারে লেখার কাজ করা দরকার। যদি আপনি কোনও ফাংশনে কোনও টেবিল থেকে নির্বাচন করেন, আপনার নিজের জিজ্ঞাসা করা উচিত যে এটি পিতামাত্তিক স্টোরেড প্রোক বা অন্য কোনও এসকিউএল কনস্ট্রাক্ট (যেমন CASE ... যখন ... ELSE ... শেষ).
SELECT * from dbo.MyTableValuedFunction()
। Sprocs, otherhand উপর, সরাসরি ADO.NET সঙ্গে সেট করে বলা যেতে পারে SqlCommand.CommandType
থেকে CommandType.StoredProcedure
।
সঞ্চিত পদ্ধতি এবং ব্যবহারকারীর দ্বারা সংজ্ঞায়িত ফাংশনগুলির মধ্যে পার্থক্য:
RAISEERROR
বা @@ERROR
ইউডিএফগুলিতে অনুমোদিত নয়।GETDATE()
ইউডিএফ ব্যবহার করা যাবে না।GETDATE()
একটি ফাংশন ব্যবহার করা যেতে পারে। অ-প্রতিরোধক সম্পর্কিত পাইভটটি ভাল নয়।
আপনি যখন অন্যান্য এসকিউএল বিবৃতিতে ব্যবহারের জন্য কোনও মান গণনা করতে এবং ফেরত দিতে চান তখন কোনও ব্যবহারকারী-সংজ্ঞায়িত ফাংশন লিখুন; আপনি পরিবর্তে চাইলে একটি সঞ্চিত পদ্ধতি লিখুন এসকিউএল বিবৃতিগুলির একটি সম্ভবত-জটিল সেটকে গোষ্ঠী করা। এগুলি দুটি ভিন্ন ভিন্ন ব্যবহারের কেস, সর্বোপরি!
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.
|
* 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.
বেসিক পার্থক্য
ফাংশন অবশ্যই একটি মান ফেরত দিতে পারে তবে সঞ্চিত পদ্ধতিতে এটি alচ্ছিক (পদ্ধতিটি শূন্য বা এন মানগুলি দিতে পারে)।
কার্যক্রমে এর জন্য কেবল ইনপুট প্যারামিটার থাকতে পারে তবে পদ্ধতিগুলির ইনপুট / আউটপুট পরামিতি থাকতে পারে।
ফাংশনটি একটি ইনপুট প্যারামিটার নেয় এটি বাধ্যতামূলক তবে সঞ্চিত প্রক্রিয়াটি o থেকে n ইনপুট প্যারামিটারগুলিতে নিতে পারে ..
প্রক্রিয়া থেকে ফাংশন কল করা যেতে পারে যেখানে ফাংশন থেকে পদ্ধতিগুলি কল করা যায় না।
অগ্রিম পার্থক্য
পদ্ধতিটি এতে সিলেক্টের পাশাপাশি ডিএমএল (INSERT / UPDATE / DELETE) স্টেটমেন্টের অনুমতি দেয় যেখানে ফাংশন এতে কেবল নির্বাচন বাছাইয়ের অনুমতি দেয়।
পদ্ধতিগুলি একটি নির্বাচনী বিবৃতিতে ব্যবহার করা যাবে না যেখানে ফাংশনটি একটি নির্বাচনী বিবৃতিতে এম্বেড করা যেতে পারে।
সঞ্চিত পদ্ধতিগুলি যেখানে এসকিউএল স্টেটমেন্টে যেখানেই / যেখানে / নির্বাচিত অংশে ফাংশন হতে পারে সেগুলিতে ব্যবহার করা যাবে না।
ফাংশনগুলি যা টেবিলগুলি ফেরত দেয় তাকে অন্য একটি রোসেট হিসাবে বিবেচনা করা যেতে পারে। এটি অন্যান্য টেবিলের সাথে জোয়িনগুলিতে ব্যবহার করা যেতে পারে।
ইনলাইন ফাংশন এমন মতামত হতে পারে যা পরামিতি নেয় এবং জওআইএন এবং অন্যান্য রাউসেট ক্রিয়াকলাপে ব্যবহার করা যেতে পারে।
কোনও পদ্ধতিতে ট্রাই-ক্যাচ ব্লক দ্বারা ব্যতিক্রম হ্যান্ডেল করা যায় তবে ফাংশনে ট্রাই-ক্যাচ ব্লক ব্যবহার করা যায় না।
আমরা কার্যক্রমে লেনদেন পরিচালনার জন্য যেতে পারি যেখানে আমরা ফাংশনে যেতে পারি না।
Returns
মূলশব্দের মাধ্যমে করা আবশ্যক এবং অবশ্যই অবশ্যই স্কেলার বা টেবিলের ধরণের হতে হবে) , তবে সঞ্চিত পদ্ধতিগুলি বিকল্পভাবে ফিরে আসতে পারে: ক) বিবৃতি দিয়ে 1 Int
ধরণের ফলাফলের কোড Return
এবং / অথবা খ) 1+ প্যারামিটারগুলি (সহ Cursor
প্রকার) Output
কীওয়ার্ডের মাধ্যমে এবং / অথবা গ) বিবরণীর মাধ্যমে 1+ সারি সেট Select
। যদি কেবল 1 সারি সেট থাকে ফিরে আসে, এটি "sertোকান "োকান" বিবৃতিটির "এক্সিকিউট_ স্টেটমেন্ট" যুক্তি হিসাবে ব্যবহার করা যেতে পারে।
একটি ব্যবহারকারী সংজ্ঞায়িত ফাংশন একটি স্কেল সার্ভার প্রোগ্রামারকে উপলব্ধ একটি গুরুত্বপূর্ণ সরঞ্জাম। আপনি এটির মতো এসকিউএল বিবৃতিতে এটি ইনলাইন ব্যবহার করতে পারেন
SELECT a, lookupValue(b), c FROM customers
যেখানে lookupValue
একটি ইউডিএফ হবে। সঞ্চিত পদ্ধতি ব্যবহার করার সময় এই জাতীয় কার্যকারিতা সম্ভব হয় না। একই সাথে আপনি কোনও ইউডিএফের ভিতরে নির্দিষ্ট কিছু করতে পারবেন না। এখানে মনে রাখার মূল বিষয়টি হ'ল ইউডিএফ এর:
একটি সঞ্চিত পদ্ধতি এই জিনিসগুলি করতে পারে।
আমার জন্য কোনও ইউডিএফের ইনলাইন ব্যবহার হ'ল একটি ইউডিএফের সর্বাধিক গুরুত্বপূর্ণ ব্যবহার।
সঞ্চিত পদ্ধতিগুলি স্ক্রিপ্ট হিসাবে ব্যবহৃত হয় । তারা আপনার জন্য কমান্ডের একটি সিরিজ চালায় এবং আপনি নির্দিষ্ট সময়ে চালানোর জন্য তাদের সময় নির্ধারণ করতে পারেন। সাধারণত ইনসার্ট, আপডেট, ডিলেট, ইত্যাদি বা এমনকি নির্বাচন যেমন একাধিক ডিএমএল বিবৃতি চালায়।
ফাংশনগুলি পদ্ধতি হিসাবে ব্যবহৃত হয়। আপনি এটি কিছু পাস এবং এটি একটি ফলাফল ফিরে। ছোট এবং দ্রুত হওয়া উচিত - এটি উড়ে যায়। সাধারণত একটি নির্বাচনী বিবৃতিতে ব্যবহৃত হয়।
সংরক্ষিত নীতিমালা:
EXEC
বা বলা উচিতEXECUTE
বিবৃতি ।OUT
প্যারামিটার ।ফাংশন:
কেবল রেকর্ড নির্বাচন করতে ব্যবহার করা যেতে পারে। তবে এটি স্ট্যান্ডার্ড এসকিউএল থেকে খুব সহজেই বলা যেতে পারে যেমন:
SELECT dbo.functionname('Parameter1')
অথবা
SELECT Name, dbo.Functionname('Parameter1') FROM sysObjects
সাধারণ পুনরায় ব্যবহারযোগ্য নির্বাচন অপারেশনগুলির জন্য, ফাংশনগুলি কোড সহজতর করতে পারে। JOIN
আপনার ফাংশনগুলিতে ক্লজগুলি ব্যবহার করার বিষয়ে কেবল সতর্ক থাকুন । যদি আপনার ফাংশনটিতে একটি JOIN
ধারা রয়েছে এবং আপনি এটি অন্য একটি নির্বাচিত বিবৃতি থেকে কল করেছেন যা একাধিক ফলাফল প্রত্যাবর্তন করে, সেই ফাংশন কলটিতে প্রতিটি লাইনের JOIN
জন্য এই টেবিলগুলি একত্রে ফলাফল সেটে ফিরে আসবে। সুতরাং যদিও তারা কিছু যুক্তি সহজ করার ক্ষেত্রে সহায়ক হতে পারে তবে তারা যদি সঠিকভাবে ব্যবহার না করা হয় তবে তারা পারফরম্যান্সের বাধাও হতে পারে।
OUT
প্যারামিটার ব্যবহার করে মানগুলি প্রদান করে ।ব্যবহারকারী সংজ্ঞায়িত ফাংশন।
সংরক্ষিত নীতিমালা
নিম্নলিখিত পয়েন্টগুলি কী সাহায্য করতে পারে সে সম্পর্কে সিদ্ধান্ত নেওয়ার জন্য-
সঞ্চিত পদ্ধতিগুলি কোনও টেবিল ভেরিয়েবলটি ফিরিয়ে দিতে পারে না যেখানে ফাংশন হিসাবে এটি করতে পারে।
আপনি সার্ভার পরিবেশের পরামিতিগুলিকে পরিবর্তন করতে সঞ্চিত পদ্ধতি ব্যবহার করতে পারেন যেখানে আপনি করতে পারেন না এমন ফাংশনগুলি ব্যবহার করে।
চিয়ার্স
এসকিউএল সার্ভার ফাংশন, যেমন কার্সারগুলি, বোঝানো হচ্ছে আপনার শেষ অস্ত্র হিসাবে ব্যবহৃত হবে! তাদের পারফরম্যান্স সংক্রান্ত সমস্যা রয়েছে এবং তাই সারণী-মূল্যবান ফাংশনটি ব্যবহার করা যতটা সম্ভব এড়ানো উচিত। পারফরম্যান্স সম্পর্কে কথা বলতে একটি মধ্যবিত্ত হার্ডওয়্যারে একটি সার্ভারে হোস্ট করা 1,000,000 রেকর্ড সহ একটি টেবিলের কথা বলা হয়; অন্যথায় আপনাকে কার্যকারিতা দ্বারা সৃষ্ট পারফরম্যান্স হিট সম্পর্কে চিন্তা করার দরকার নেই।
আরও রেফারেন্স দেখুন: http://databases.aspfaq.com/database/should-i-use-a-view-a-stored-procedure-or-a-user-defined-function.html
একক মান ফেরত দেয় এমন ফাংশন দিয়ে শুরু করুন। সুন্দর জিনিস হ'ল আপনি ঘন ঘন ব্যবহৃত কোড কোনও ফাংশনে রেখে দিতে পারেন এবং ফলস্বরূপ সেটে কলাম হিসাবে তাদের ফিরিয়ে দিতে পারেন।
তারপরে, আপনি শহরগুলির প্যারামিটারাইজড তালিকার জন্য কোনও ফাংশন ব্যবহার করতে পারেন। dbo.GetCitiesIn ("NY") এটি একটি সারণী প্রদান করে যা যোগদান হিসাবে ব্যবহৃত হতে পারে।
এটি কোড সংগঠিত করার একটি উপায়। কখন কখন পুনর্ব্যবহারযোগ্য এবং কখন সময় অপচয় হয় তা জেনে রাখা কেবলমাত্র পরীক্ষা এবং ত্রুটি এবং অভিজ্ঞতার মাধ্যমেই অর্জন করা।
এছাড়াও, এসকিউএল সার্ভারে ফাংশনগুলি একটি ভাল ধারণা। এগুলি দ্রুত এবং বেশ শক্তিশালী হতে পারে। ইনলাইন এবং সরাসরি নির্বাচন। অতিমাত্রায় ব্যবহার না করার ক্ষেত্রে যত্নশীল।
সঞ্চিত পদ্ধতির চেয়ে ফাংশন পছন্দ করার জন্য এখানে একটি ব্যবহারিক কারণ। আপনার যদি এমন কোনও সঞ্চিত প্রক্রিয়া থাকে যা অন্য সঞ্চিত পদ্ধতির ফলাফলের প্রয়োজন হয় তবে আপনাকে একটি সন্নিবেশ-এক্সিকিউট স্টেটমেন্ট ব্যবহার করতে হবে। এর অর্থ এই যে আপনাকে একটি টেম্প টেবিল তৈরি করতে হবে এবং টেম্প টেবিলের exec
মধ্যে সঞ্চিত পদ্ধতির ফলাফলগুলি সন্নিবেশ করতে একটি বিবৃতি ব্যবহার করতে হবে। এটা অগোছালো। এর সাথে একটি সমস্যা হ'ল সন্নিবেশ-এক্সেকসগুলি নেস্ট করা যায় না ।
আপনি যদি সঞ্চিত পদ্ধতিতে আটকে থাকেন যা অন্যান্য সঞ্চিত প্রক্রিয়াগুলি কল করে, আপনি এটির মধ্যে চলে যেতে পারেন। যদি নেস্টেড সঞ্চিত পদ্ধতিটি কেবল একটি ডেটাসেট ফেরত দেয় তবে এটি একটি টেবিল-মূল্যবান ফাংশন দিয়ে প্রতিস্থাপন করা যেতে পারে এবং আপনি আর এই ত্রুটিটি পাবেন না।
( এটি আমাদের ব্যবসায়ের যুক্তিটি ডাটাবেস থেকে দূরে রাখার আরও একটি কারণ )
কার্যকারিতা একটি নির্বাচনী বিবৃতিতে ব্যবহার করা যেতে পারে যেখানে পদ্ধতিগুলি পারে না।
সঞ্চিত পদ্ধতিতে ইনপুট এবং আউটপুট উভয় পরামিতি লাগে তবে ফাংশনগুলি কেবল ইনপুট পরামিতি নেয়।
কার্যপ্রণালী যেখানে পাঠ্য, নেক্সট, চিত্র এবং টাইমস্ট্যাম্পগুলির মানগুলি ফিরে আসতে পারে না যেখানে পদ্ধতিগুলি পারে।
সারণী তৈরিতে ফাংশনগুলি ব্যবহারকারী সংজ্ঞায়িত ডেটাটাইপ হিসাবে ব্যবহার করা যেতে পারে তবে পদ্ধতিগুলি তা করতে পারে না।
*** যেমন: -create table <tablename>(name varchar(10),salary getsal(name))
এখানে গেসাল একটি ব্যবহারকারী সংজ্ঞায়িত ফাংশন যা বেতনের ধরণটি প্রদান করে, যখন টেবিল তৈরি হয় তখন বেতন ধরণের জন্য কোনও স্টোরেজ বরাদ্দ করা হয় না, এবং গেসাল ফাংশনটিও কার্যকর হয় না, তবে যখন আমরা এই টেবিলটি থেকে কিছু মান আনছি, গেসাল ফাংশনটি কার্যকর হবে এবং রিটার্ন টাইপ ফলাফল ফলাফল হিসাবে ফিরে আসে।
আমি বুঝতে পারি এটি একটি অতি পুরনো প্রশ্ন, তবে আমি উত্তরের কোনওটিতে উল্লেখ করা একটি গুরুত্বপূর্ণ দিক দেখতে পাচ্ছি না: ক্যোয়ারী পরিকল্পনায় অন্তর্ভুক্ত।
কার্যাবলী হতে পারে ...
স্কালে:
CREATE FUNCTION ... RETURNS scalar_type AS BEGIN ... END
একাধিক বিবৃতি সারণী মূল্যবান:
CREATE FUNCTION ... RETURNS @r TABLE(...) AS BEGIN ... END
ইনলাইন টেবিলের মূল্যবান:
CREATE FUNCTION ... RETURNS TABLE AS RETURN SELECT ...
তৃতীয় ধরণের (ইনলাইন টেবিলের মূল্যবান) কোয়েরি অপ্টিমাইজার দ্বারা মূলত (প্যারাম্যাট্রাইজড) মতামত হিসাবে বিবেচিত হয়, যার অর্থ আপনার ক্যোয়ারী থেকে ফাংশনটি উল্লেখ করা ফাংশনের এসকিউএল বডিটিকে (অনুলিপি করে অনুলিপি-পেস্ট করা ছাড়া) অনুলিপি করার অনুরূপ, শীর্ষস্থানীয় নিম্নলিখিত সুবিধা:
উপরের ফলে সম্ভাব্য তাৎপর্যপূর্ণ পারফরম্যান্সের সঞ্চয় হতে পারে, বিশেষত যখন একাধিক স্তরের ফাংশন সংমিশ্রিত করা হয়।
দ্রষ্টব্য: এসকিউএল সার্ভার 2019 এর মতো মনে হচ্ছে স্কেলার ফাংশনটি ইনলাইনিংয়ের কিছু ফর্মও প্রবর্তন করবে ।
এসকিউএল সার্ভারে, ফাংশন এবং সঞ্চিত পদ্ধতি দুটি পৃথক পৃথক সত্তা।
ফাংশন: এসকিউএল সার্ভার ডাটাবেসে, ফাংশনগুলি কিছু ক্রিয়া সম্পাদন করতে ব্যবহৃত হয় এবং ক্রিয়াটি তত্ক্ষণাত ফল দেয়। ফাংশন দুটি ধরণের:
সিস্টেম সংজ্ঞায়িত
ব্যবহারকারী সংজ্ঞায়িত
সঞ্চিত পদ্ধতি: এসকিউএল সার্ভারে, সঞ্চিত পদ্ধতিগুলি সার্ভারে সংরক্ষণ করা হয় এবং এটি শূন্য, একক এবং একাধিক মান হতে পারে। সঞ্চিত পদ্ধতি দুটি ধরণের: