با عرض سلام و خسته نباشید خدمت کاربران محترم سایت آموزشی پی وی لرن. و کاربرانی که آموزش کامل PL/SQL را دنبال می کنند. در این پست آموزشی، ما در مورد سوابق در PL / SQL (رکوردها در PL / SQL) بحث خواهیم کرد. رکوردها در PL / SQL یک ساختار داده است که می تواند اقلام داده های مختلف را نگه دارد. رکوردها شامل حوزه های مختلف می باشند که مشابه ردیف جدول پایگاه داده هستند.
می خواهید کتاب های خود را در یک کتابخانه پیگیری کنید. ممکن است بخواهید ویژگی های زیر را در مورد هر یک از کتاب ها مانند عنوان، نویسنده، موضوع، شناسه کتاب مشاهده کنید. یک رکورد حاوی یک فیلد، برای هر یک از این آیتم ها اجازه می دهد تا یک کتاب را به عنوان یک واحد منطقی در نظر بگیرد و به شما امکان می دهد که اطلاعات خود را به صورت بهتر سازماندهی کنید.
PL / SQL می تواند انواع زیر را داشته باشد:
ویژگی٪ ROWTYPE برنامه نویس را قادر میسازد سوابق مبتنی بر جدول و مبتنی بر cursorbased ایجاد کند.
مثال زیر مفاهیم پرونده های مبتنی بر جدول را نشان می دهد. ما از جدول مشتریان که در جلساه های قبلی ایجاد کرده ایم استفاده می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 | DECLARE customer_rec customers%rowtype; BEGIN SELECT * into customer_rec FROM customers WHERE id = 5; dbms_output.put_line('Customer ID: ' || customer_rec.id); dbms_output.put_line('Customer Name: ' || customer_rec.name); dbms_output.put_line('Customer Address: ' || customer_rec.address); dbms_output.put_line('Customer Salary: ' || customer_rec.salary); END; / |
هنگامی که کد بالا در SQL فوری اجرا می شود، نتیجه زیر را تولید می کند.
1 2 3 4 5 6 | Customer ID: 5 Customer Name: Hardik Customer Address: Bhopal Customer Salary: 9000 PL/SQL procedure successfully completed. |
مثال زیر مفاهیم اسناد مبتنی بر مکان نما را نشان می دهد. ما از جدول مشتریان که در پست های قبلی ایجاد کرده ایم استفاده می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | DECLARE CURSOR customer_cur is SELECT id, name, address FROM customers; customer_rec customer_cur%rowtype; BEGIN OPEN customer_cur; LOOP FETCH customer_cur into customer_rec; EXIT WHEN customer_cur%notfound; DBMS_OUTPUT.put_line(customer_rec.id || ' ' || customer_rec.name); END LOOP; END; / |
هنگامی که کد بالا در SQL فوری اجرا می شود، نتیجه زیر را تولید می کند.
1 2 3 4 5 6 7 8 | 1 Ramesh 2 Khilan 3 kaushik 4 Chaitali 5 Hardik 6 Komal PL/SQL procedure successfully completed. |
PL / SQL یک نوع سوابق در PL / SQL تعریف شده توسط کاربر فراهم می کند که به شما اجازه می دهد که ساختارهای مختلف رکورد را تعریف کنید. این پرونده ها شامل زمینه های مختلف است. فرض کنید می خواهید کتاب های خود را در یک کتابخانه پیگیری کنید. ممکن است بخواهید ویژگی های زیر را در مورد هر کتاب پیگیری کنید.
نوع سوابق در PL / SQL تعریف شده است.
1 2 3 4 5 6 7 | TYPE type_name IS RECORD ( field_name1 datatype1 [NOT NULL] [:= DEFAULT EXPRESSION], field_name2 datatype2 [NOT NULL] [:= DEFAULT EXPRESSION], ... field_nameN datatypeN [NOT NULL] [:= DEFAULT EXPRESSION); record-name type_name; |
رکورد کتاب به شرح زیر اعلام می شود.
1 2 3 4 5 6 7 8 | DECLARE TYPE books IS RECORD (title varchar(50), author varchar(50), subject varchar(100), book_id number); book1 books; book2 books; |
برای دسترسی به هر فیلد یک رکورد، ما از اپراتور نقطه (.) استفاده می کنیم. اپراتور دسترسی عضو به عنوان یک دوره بین نام متغیر رکورد و فیلد که می خواهیم به آن دسترسی داشته باشیم، کد شده است.
نمونه ای برای توضیح استفاده از رکورد را در کد زیر ببینید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | DECLARE type books is record (title varchar(50), author varchar(50), subject varchar(100), book_id number); book1 books; book2 books; BEGIN -- Book 1 specification book1.title := 'C Programming'; book1.author := 'Nuha Ali '; book1.subject := 'C Programming Tutorial'; book1.book_id := 6495407; -- Book 2 specification book2.title := 'Telecom Billing'; book2.author := 'Zara Ali'; book2.subject := 'Telecom Billing Tutorial'; book2.book_id := 6495700; -- Print book 1 record dbms_output.put_line('Book 1 title : '|| book1.title); dbms_output.put_line('Book 1 author : '|| book1.author); dbms_output.put_line('Book 1 subject : '|| book1.subject); dbms_output.put_line('Book 1 book_id : ' || book1.book_id); -- Print book 2 record dbms_output.put_line('Book 2 title : '|| book2.title); dbms_output.put_line('Book 2 author : '|| book2.author); dbms_output.put_line('Book 2 subject : '|| book2.subject); dbms_output.put_line('Book 2 book_id : '|| book2.book_id); END; / |
هنگامی که کد بالا در SQL فوری اجرا می شود، نتیجه زیر را تولید می کند.
1 2 3 4 5 6 7 8 9 10 | Book 1 title : C Programming Book 1 author : Nuha Ali Book 1 subject : C Programming Tutorial Book 1 book_id : 6495407 Book 2 title : Telecom Billing Book 2 author : Zara Ali Book 2 subject : Telecom Billing Tutorial Book 2 book_id : 6495700 PL/SQL procedure successfully completed. |
شما می توانید یک رکورد را به عنوان پارامتر به زیر برنامه منتقل کنید همانطور که هر متغیر دیگری را منتقل می کنید. شما همچنین می توانید به رشته های رکورد به همان شیوه ای که در مثال بالا دسترسی پیدا کرده اید دسترسی پیدا کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | DECLARE type books is record (title varchar(50), author varchar(50), subject varchar(100), book_id number); book1 books; book2 books; PROCEDURE printbook (book books) IS BEGIN dbms_output.put_line ('Book title : ' || book.title); dbms_output.put_line('Book author : ' || book.author); dbms_output.put_line( 'Book subject : ' || book.subject); dbms_output.put_line( 'Book book_id : ' || book.book_id); END; BEGIN -- Book 1 specification book1.title := 'C Programming'; book1.author := 'Nuha Ali '; book1.subject := 'C Programming Tutorial'; book1.book_id := 6495407; -- Book 2 specification book2.title := 'Telecom Billing'; book2.author := 'Zara Ali'; book2.subject := 'Telecom Billing Tutorial'; book2.book_id := 6495700; -- Use procedure to print book info printbook(book1); printbook(book2); END; / |
هنگامی که کد بالا در SQL فوری اجرا می شود، نتیجه زیر را تولید می کند.
1 2 3 4 5 6 7 8 9 10 | Book title : C Programming Book author : Nuha Ali Book subject : C Programming Tutorial Book book_id : 6495407 Book title : Telecom Billing Book author : Zara Ali Book subject : Telecom Billing Tutorial Book book_id : 6495700 PL/SQL procedure successfully completed. |
سوابق در PL / SQL (رکوردها در PL / SQL) نوع دیگری از انواع داده است که اوراکل اجازه می دهد تا به عنوان حفره یا سوراخ تعریف شود. رکوردها انواع داده کامپوزیت هستندو این بدین معنی است که ترکیبی از انواع داده های اسکالر مانند char، varchar، number و غیره است. هر نوع داده اسکالر در رکورد، ارزش دارد. رکوردها در PL / SQL می تواند به عنوان یک ردیف داده تجسم شود. این می تواند تمام محتویات یک ردیف باشد.