اوراکل 23c – اجرای دستور SELECT بدون عبارت FROM

قبلا در مطلبی  نکاتی را در مورد “جدول dual و فراخوانی توابع در اوراکل و پستگرس” ارائه کردیم و توضیح دادیم که در دیتابیس پستگرس، در زمان فراخوانی توابع و عبارتها به همراه دستور select الزامی به استفاده از کلمه کلیدی FROM نخواهد بود. در صورتی که در دیتابیس اوراکل به ناچار باید از عبارت FROM در دستور SELECT استفاده کرد همچنین ثابت کردیم که به لحاظ پرفورمنسی استفاده از جدول dual در این مواقع بسیار کاربردی است.

حالا در نسخه 23c اوراکل امکان اجرای دستور SELECT را بدون عبارت FROM فراهم کرده است:

SQL*Plus: Release 21.0.0.0.0 - Production on Thu Jun 15 13:56:58 2023
SQL> select sysdate;
ORA-00923: FROM keyword not found where expected
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
SQL> SELECT sysdate;
SYSDATE
---------
15-JUN-23
SQL> select 15+85*98;
  15+85*98
----------
      8345

در plsql هم این امکان وجود دارد:

SQL> create or replace function func1
return date
as
d date;
begin
  select sysdate into d;
  return d;
end;
/
Function created.
SQL> select func1;
FUNC1
---------
15-JUN-23

نکته ای که شاید جالب بنظر برسد، استفاده اوراکل از dual در پس زمینه است این مسئله با فعال کردن trace قابل اثبات است:

SQL> select 1402*1403;
 1402*1403
----------
   1967006

قسمتی از trace مربوط به این کوئری را می بینید:

Final query after transformations:******* UNPARSED QUERY IS *******
SELECT 1967006 "1402*1403" FROM "SYS"."DUAL" "DUAL"

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

Comment (1)

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *