قبلا در مطلبی نکاتی را در مورد “جدول 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"
Comment (1)