مطمئنا آدمهای کمی بین ما هستند که به اس‌کیو‌ال به دید یک زبان برنامه نویسی نگاه کنند، نهایت استفاده‌ی ما از پایگاه داده‌ها اجرای کوئری های ساده و بندرت پیچیده است برای دستیابی به اطلاعات موجود، به ندرت از `view` ها استفاده میکنم، از وجود توابع و پروسیجر ها در آن بی اطلاعیم و نمیدانیم چه زبان قدرتمندی در دست داریم. در اکثر مواقع اگر قرار باشد اطلاعاتی از یک جدول گرفته و پردازش کنیم و نتیجه را دوباره به پایگاه داده برگردانیم (پردازش‌هایی که نیاز به تعامل با کاربر ندارند)، آن را با زبان برنامه نویسی دیگر انجام میدهیم، درحالی که میتوان همه کار را مستقیما با خود `SQL` انجام داد.

قصد من معرفی `SQL` یا تعریف و تمجدید از آن نیست، پاراگراف فوق تنها تلنگری بود به نحوه‌ی دید ما به این زبان. برویم سراغ استفاده از متغییر های در توابع در `MySQL` میتوان درون توابع و پروسیجرها متغییر هایی تعریف کرد و از آنها استفاده کرد، تنها محدودیت موجود در متغییرها این است که آنها تنها یک داده را در خود نگه داری میکنند و قادر به نگه داری یک سطر یا جدول نیستند. تعریف متغییرها بسیار ساده است:

``` DECLARE var_name var_type; DECLARE l_first_name VARCHAR(30); ```

`var_type` مشخص کننده نوع متغییر است. برای مقدار دهی به متغییرها نیز به دو حالت میتوان عمل کرد

``` -- 1 SET var_name = (SELECT column from ...) -- 2 SELECT column INTO var_name FROM ... ```

در حالت اول تنها یک متغییر را میتوان مغدار دهی کرد ولی نوع دوم توانایی مقدار دهی چندگانه را دارد.

``` CREATE PROCEDURE myProc(in_customer_id INT) BEGIN DECLARE l_first_name VARCHAR(30); DECLARE l_last_name VARCHAR(30); DECLARE l_city VARCHAR(30); SELECT first_name, last_name,city INTO l_first_name,l_last_name,l_city FROM employee WHERE id=in_customer_id; select l_first_name; select l_last_name; select l_city;

END$$