1234

آموزش Record ها

تعداد بازدید
63
زمان مطالعه
7 دقیقه
بـروز رسانـی
1402/06/31
پرینت مقاله
اشتراک گذاری

در ادامه مباحث مطرح شده با موضوع PL/SQL در این بخش به معرفی نوع های داده ای ترکیبی (composit data type) ها میپردازم
و در این بخش به معرفی record و در بخش بعد به معرفی collection خواهم پرداخت

نوع داده ای ترکیبی چیست و چه کاربردی دارد ؟
✅میتوان گفت که نوع داده ای ترکیبی از کنار هم قرار دادن یک یا چند نوع داده ای شمارش پذیر (scalar data type ) ها مانند date ، number ، varchar2 ایجاد میشود که به منظور تعریف یک ساختار جهت نگهداری داده های مرتبط با هم تعریف میشود ، در واقع انواع داده ای ترکیبی شبیه به ساختار های داده ای زبان های برنامه نویسی مانند class یا structure میباشند

چند نوع داده ای ترکیبی در PL/SQL وجود دارد ؟
✅دو نوع داده ای ترکیبی در PL/SQL وجود دارد که شامل

1️⃣  record
➡️ user-defined record
➡️ % rowtype

2️⃣ collection
➡️index by table
➡️ nested table
➡️ varray

در چه مواقعی باید از record و در چه مواقعی باید از collection استفاده کنیم ؟
✅ هرگاه نیاز داشتیم تا از نوع داده ای ترکیبی برای نگهداری یک سطر داده استفاده کنیم میتوانیم از record استفاده کنیم
✅ هرگاه نیاز داشتیم تا از نوع داده ای ترکیبی برای بگهداری بیش از یک رکورد استفاده کنیم میتوانیم از collection استفاده کنیم

در چه مواقعی باید از user_defined و چه مواقعی باید از %rowtype استفاده کنیم ؟
✅ مواقعی که می خواهیم نوع داده ای ترکیبی داشته باشیم که فیلدهای آن در یک جدول یا view وجود ندارد از user_defiend استفاده میکنیم
✅ مواقعی که می خواهیم نوع داده ای ترکیبی داشته باشیم که فیلدهای آن در یک جدول یا view وجود دارد از %rowtype استفاده میکنیم

فیلد در نوع داده ای ترکیبی چیست؟
✅ به هر کدام از اقلام داده ای (ستون ها) در نوع های داده ای ترکیبی یک فیلد (field) گفته میشود

چگونه و در کدام قسمت میتوانیم یک user-defined رکورد تعریف کنیم؟
✅ برای تعریف user_defined رکورد باید دو گام ذیل را طی کنیم
گام ????️ : تعریف نوع داده ای با استفاده از کلمه type
گام ????️: تعریف متغیری از نوع داده ای تعریف شده گام ????️

نحوه تعریف user-defined رکورد به شکل زیر میباشد

declare
????️ type <<type_name>> is record (field_name1 type , field_name2 type , field_name3 type , …. );
????️ variable_name <<type_name>>;

به مثال ذیل دقت نمایید ????????????????????????

declare
????️ type stu_info is record (ST_NUM number , f1_name employees.first_name % type, birth_date date );
????️ v_stu_info stu_info;
begin
v_stu_info.stu_num := 123;
end;

???? همانطور که مشاهده میکنید گام های ????️ و ????️ در بخش declare تعریف شده اند
???? میتوان با استفاده از نقطه (.) جهت مراجعه به فیلدهای رکورد تعریف شده به منظور خواندن و نوشتن دسترسی پیدا کرد

چگونه و در کدام قسمت میتوانیم یک رکورد از نوع %rowtype تعریف کنیم؟
✅ برای تعریف رکورد از نوع %rowtype کافی است در قسمت declare شناسه (identifier)ی از نوع جدول یا view به همراه عبارت %rowtype تعریف کنیم

به مثال ذیل دقت نمایید ????????????????????????

declare
emp_rec employees % rowtype;
begin
emp_rec.salary := 2300;
emp_rec.first_name := ‘Ali’;
…..
end;

???? همانطور که مشاهده میکنید گام ????️ برای %rowtype استفاده نمیشود و فقط گام ????️ در بخش declare تعریف شده است
???? همچنان میتوان با استفاده از نقطه (.) جهت مراجعه به فیلدهای رکورد تعریف شده به منظور خواندن و نوشتن دسترسی پیدا کرد
???? کابرد %rowtype در مواقعی است که میخواهیم تمامی ستون های یک سطر از view یا جدول را در متغیری قرار دهیم ، به مثال ذیل دقت نمایید ????????????

declare
emp_rec employees%rowtype;
begin
select * into emp_rec from employees emp where emp.employee_id = 100;
dbms_output.put_line(emp_rec.first_name);
end;

???? همچنین میتوان از قابلیت های insert یا update سطر های جدول استفاده کرد ، به مثال ذیل دقت نمایید ????????????????

declare
emp_rec employees%rowtype;
begin

select 1500,
first_name,
last_name,
‘Ali_ebrahimifard@yahoo.com’ email,
phone_number,
hire_date,
job_id,
salary,
commission_pct,
manager_id,
department_id
into emp_rec
from employees emp
where emp.employee_id = 100;

insert into employees values emp_rec;
end;

در مثال بالا مقادیر ستون های کارمند 100 در emp_rec قرار داده شده و پس ازآن در جدول employees درج میشود

declare
emp_info_rec emp_info%rowtype;
begin
select * into emp_info_rec from emp_info e where e.employee_id = 100;
emp_info_rec.salary := 2300;
update emp_info e set row = emp_info_rec where e.employee_id = 101;

end;

???? در مثال بالا مقادیر ستون های کارمند 100 در emp_info_rec قرار داده شده و تمام مقادیر ستون های کارمند 101 با مقدار فوق جایگزین میشود
❇️❇️❇️ در بحث بعدی راجع به collection و روش تعریف آن توضیحاتی را ارائه خواهم داد ❇️❇️❇️

 

برای مشاهده کامل مطلب کلیک کنید

دیدگاهتان را بنویسید

آیا این مقاله مفید بود؟

از ۱ تا ۵ چه امتیازی می‌دهید؟

میانگین امتیاز از رای

اولین نفر باشید که رای میدهد!

تماس با پشتیبانی
فرداوراکل
این فیلد برای اعتبار سنجی است و باید بدون تغییر باقی بماند .