Table Values Constructor قابلیتی است که در بیشتر دیتابیسهای رابطه ای وجود داشته و اوراکل امکان استفاده از این قابلیت را در نسخه 23c فراهم کرده است.
بر اساس این قابلیت، می توانیم با اجرای یک دستور insert ساده(Insert به همراه عبارت Values) چندین رکورد را در یک جدول درج کنیم البته استفاده از کلمه کلیدی Values به دستور insert محدود نمی شود و از این عبارت می توانیم برای دستورات DMLای دیگر نظیر Select و Merge هم استفاده کنیم.
ابتدا مثالی از نحوه استفاده از این قابلیت را به همراه دستور insert مشاهده می کنید.
SQL*Plus: Release 23.0.0.0.0 - Developer-Release on Tue Aug 29 22:41:17 2023
SQL> insert into Irani values(1,'Vahid'),(2,'Usef');
2 rows created.
SQL> commit;
Commit complete.
با اجرای دستور فوق دو رکورد در جدول Irani ثبت شده اند:
SQL> select * from Irani; ID NAME
---------- -------------- 1 Vahid 2 Usef
این کار در نسخه های قبلی اوراکل امکان پذیر نبود:
SQL*Plus: Release 21.0.0.0.0 - Production on Tue Aug 29 21:47:30 2023
SQL> create table Irani(id number,name varchar2(14));
Table created.
SQL> insert into Irani values(1,'Vahid'),(2,'Usef');
'ORA-00933: SQL command not properly ended'
و برای انجام این کار در نسخه 21c می بایست دو بار دستور insert را اجرا کنیم:
SQL*Plus: Release 21.0.0.0.0 - Production on Tue Aug 29 21:47:30 2023 ID NAME
---------- ----- 1 Vahid 2 Usef
SQL> insert into Irani values(1,'Vahid');
1 row created.
SQL> insert into Irani values(2,'Usef');
1 row created.
البته امکان اجرای دستورات فوق با استفاده از union all هم امکان پذیر است(در نسخه 21c):
SQL> insert into Irani select 1 as id,'Vahid' as name from dual union all select 2 as id, 'Usef' as name from dual;
2 rows created.
برای دستور select هم می توانیم به شکل زیر از قابلیت TVC استفاده کنیم:
SQL> select * from (values(1,'Vahid'),(2,'Usef'))tbl1(id,name); ID NAME
---------- ----- 1 Vahid 2 Usef
این دستور در زمان ساخت جدول شاید کاربردی باشد:
SQL> create table Irani as select * from (values(1,'Vahid'),(2,'Usef'))tbl1(id,name);
Table created.
SQL> select * from Irani; ID NAME
---------- ----- 1 Vahid 2 Usef
SQL> desc Irani
Name Null? Type ------ -------- ----------- ID NUMBER NAME VARCHAR2(5)
البته در دستور فوق می توانیم تنظیمات دیگری را هم اعمال کنیم برای مثال می توانیم حداکثر طول نوع داده VARCHAR2 و NUMBER را افزایش دهیم:
SQL> create table Irani as select * from (values(1,'Vahid'),(2,cast('USEF' as VARCHAR2(14))))tbl1(id,name);
Table created.
SQL> desc Irani Name Null? Type ------ -------- --------------- ID NUMBER NAME VARCHAR2(14)این قابلیت همراه با with clause هم قابل استفاده است:
SQL> with Irani (ID,NAME) as ( values (1, 'Vahid'), (2, 'Usef'))
select * from Irani; ID NAME
---------- ----- 1 Vahid 2 Usef
ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور......................
تلفن: 09128110897
ایمیل:[email protected]
تالار های تخصصی...
ما را در سایت تالار های تخصصی دنبال میکنید
برچسب: نویسنده: خنجی بازدید: 72 تاريخ: چهارشنبه 10 آبان 1402 ساعت: 11:11