Stored Procedure ها و کامنت ها

27 اسفند 1397
درسنامه درس 20 از سری آموزش زبان SQL
SQL-Language-comments-stored-procedures

با سلام و عرض ادب خدمت همراهان گرامی روکسو. در این جلسه می خواهیم در رابطه با stored procedure ها و کامنت ها صحبت کنیم. stored procedure در واقع مانند توابعی برای کدهای SQL هستند تا شما نیازی به دوباره نویسی نداشته باشید و می توانند در دنیای برنامه نویسی به شما کمک بسیار زیادی بکنند. کامنت ها نیز در بحث یادگیری و نوت برداری شخصی در پروژه های بزرگ از اهمیت ویژه ای برخوردار هستند بنابراین بهتر است بدون مقدمه وارد مبحث جلسه ی امروز شویم!

Stored Procedure در SQL

 Stored Procedure ها (به معنی «رویه ی ذخیره شده») کدهای SQL ای هستند که می توانید آن ها را ذخیره کنید تا بعدا و در صورت نیاز دوباره یا چندین باره از آن استفاده کنید. بنابراین اگر کد SQL ای دارید که مرتبا از آن استفاده می کنید و مجبور هستید هر بار آن را بنویسید، می توانید آن را به عنوان stored procedure ذخیره کنید و هر زمان لازمش داشتید صدایش بزنید.

شما حتی می توانید به stored procedure ها پارامتر هم بدهید تا بر اساس پارامتر های ورودی عمل کنند و انعطاف پذیر باشند.

ساختار کلی برای ایجاد یک stored procedure به شکل زیر است:

CREATE PROCEDURE procedure_name
AS
sql_statement
GO;

و ساختار فراخوانی آن نیز به این شکل:

EXEC procedure_name;

می خواهیم برخی از مثال های خود را روی جدول Customers پیاده کنیم بنابراین ابتدا نگاهی به آن می اندازیم:

Country PostalCode City Address ContactName CustomerName CustomerID
Germany 12209 Berlin Obere Str. 57 Maria Anders Alfreds Futterkiste 1
Mexico 05021 México D.F. Avda. de la Constitución 2222 Ana Trujillo Ana Trujillo Emparedados y helados 2
Mexico 05023 México D.F. Mataderos 2312 Antonio Moreno Antonio Moreno Taquería 3
UK WA1 1DP London 120 Hanover Sq. Thomas Hardy Around the Horn 4
Sweden S-958 22 Luleå Berguvsvägen 8 Christina Berglund Berglunds snabbköp 5

مثال کار با stored procedure

مثال اول - دستور SQL زیر تمام مشتریان را از جدول Customers انتخاب می کند. نام این stored procedure را SelectAllCustomers (به معنی «تمام مشتریان را انتخاب کن») گذاشته ایم:

CREATE PROCEDURE SelectAllCustomers @City nvarchar(30)
AS
SELECT * FROM Customers WHERE City = @City
GO;

و زمانی که بخواهیم آن را فراخوانی کنیم به این شکل عمل می کنیم:

EXEC SelectAllCustomers City = "London";

استفاده از Stored Procedure با چندین پارامتر

ایجاد چندین پارامتر به جای یک پارامتر کار آسانی است. تنها کافی است که هر پارامتر و نوع داده ی آن را مشخص کنید و هر مورد را با ویرگول جدا کنید.

مثال اول - دستور SQL زیر ابتدا به سراغ جدول Customers می رود و مشتریانی را انتخاب می کند که اولا از شهر خاصی باشند و دوما کد پستی (PostalCode) خاصی داشته باشند:

CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10)
AS
SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode
GO;

و زمانی که بخواهیم آن را فراخوانی کنیم به این شکل عمل می کنیم:

EXEC SelectAllCustomers City = "London", PostalCode = "WA1 1DP";

کامنت ها در SQL

مانند اکثر زبان های برنامه نویسی و غیر آن، شما در SQL اجازه ی استفاده از کامنت ها را دارید که عموما دو استفاده ی کلی دارند:

  • توضیح دادن قسمت خاصی از کدهای SQL
  • جلوگیری از اجرای کد یا کدهای خاصی از SQL

قبل از ادامه ی بحث باید نکته ای را گوشزد کنم؛ مثال های این جلسه در مرورگر های فایرفاکس و IE کار نمی کنند بنابراین از مرورگر کروم استفاده کنید.

کامنت های یک خطی

کامنت های یک خطی در زبان SQL با علامت های -- شروع می شوند بنابراین هر متنی که بین -- و پایان خط قرار بگیرد کامنت محسوب شده و اجرا نخواهد شد. به مثال زیر توجه کنید:

-- Select all:
SELECT * FROM Customers;

اجرای این دستور در پایگاه داده ی Northwind

قسمت "Select all" در کد بالا از آنجا که بعد از -- قرار گرفته است کامنت محسوب شده و نادیده گرفته می شود.

در مثال بعدی می خواهیم شرط WHERE را به صورت موقت حذف کنیم. چرا؟ تصور کنید در حال برنامه نویسی و انجام یک پروژه هستید و می خواهید مشکلی را در برنامه تان پیدا کنید. معمولا در این شرایط برنامه نویسان سعی می کنند قسمت های مختلف برنامه را ایزوله کنند؛ یعنی جزئیات را حذف کرده و از کل به جزء حرکت کنند تا ببینند کدام خط از کد باعث ایجاد مشکل شده است. اگر در پروژه های بزرگ بخواهید قسمتی از کد را حذف کنید ممکن است بعدا فراموش کنید این کد متعلق به کدام قسمت بوده است و باعث سر در گمی خودتان بشوید اما با استفاده از کامنت ها می توانید موقتا آن را غیر فعال کنید و بعدا به راحتی آن را به حالت اولیه برگردانید:

SELECT * FROM Customers -- WHERE City='Berlin';

اجرای این دستور در پایگاه داده ی Northwind

می توان همین اتفاق را در چنین حالتی نیز مشاهده کرد:

--SELECT * FROM Customers;
SELECT * FROM Products;

اجرای این دستور در پایگاه داده ی Northwind

کامنت های چند خطی

کامنت های چند خطی در زبان SQL با علامت */ شروع شده و با /* نیز پایان می یابند بنابراین هر متنی که بین /* و */ باشد نادیده گرفته می شود (کامنت محسوب می شود). در مثال زیر یک نمونه ی جالب از کامنت های چند خطی را مشاهده می کنیم:

/*Select all the columns
of all the records
in the Customers table:*/
SELECT * FROM Customers;

اجرای این دستور در پایگاه داده ی Northwind

شما می توانید به راحتی با حذف کردن علامت های کامنت کد را به حالت دیگری تغییر دهید و ببینید قبل از کامنت شدن آن قسمت، کد چه کاری انجام می داده است.

همچنین می توانی به جای یک دستور یا استفاده از کامنت یک خطی برای چندین دستور مختلف، یک بار از کامنت های چند خطی استفاده کنیم:

/*SELECT * FROM Customers;
SELECT * FROM Products;
SELECT * FROM Orders;
SELECT * FROM Categories;*/
SELECT * FROM Suppliers;

اجرای این دستور در پایگاه داده ی Northwind

همچنین در مورد حذف قسمت خاصی از یک دستور و فایده ی آن صحبت کردیم اما این بحث مخصوص کامنت های تک خطی نیستند و شما می توانید آن را به این شکل نیز پیاده کنید:

SELECT CustomerName, /*City,*/ Country FROM Customers;

اجرای این دستور در پایگاه داده ی Northwind

حتی می توانیم پیشرفته تر عمل کنیم و کد را به این شکل نیز بنویسیم:

SELECT * FROM Customers WHERE (CustomerName LIKE 'L%'
OR CustomerName LIKE 'R%' /*OR CustomerName LIKE 'S%'
OR CustomerName LIKE 'T%'*/ OR CustomerName LIKE 'W%')
AND Country='USA'
ORDER BY CustomerName;

اجرای این دستور در پایگاه داده ی Northwind

همانطور که می بینید در پرانتز قسمتی از میان یک کد را غیر فعال کرده ایم. تصور کنید برای تست کردن برنامه تان یا عیب یابی از آن مجبور به حذف آن می شدید! تجربه ثابت کرده است که در بسیاری از مواقع اگر کدهایتان را در این حالت پیچیده حذف کنید، دوباره نوشتنشان آسان تر است تا درست کردن قسمت حذف شده!

امیدوارم از این قسمت لذت برده باشید. دستورات SQL برای کار با داده ها در این قسمت به پایان می رسد و از قسمت بعدی با دستوراتی آشنا می شویم که کار ساخت پایگاه داده، ساخت جدول، تعیین primary key و ... را بر عهده دارند. این مباحث بسیار مهم هستند بنابراین با ما همراه باشید.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش زبان SQL توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما (1 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

مهدی اسدپور
02 فروردین 1401
بهتر است در انتها ی یا دوتا برنامه از اول بعنی از نصب تا کد نویسی و اجرا و توضیحات کد ها باشه

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.