در نسخه 21c، اوراکل امکان اجرای کد JavaScript در داخل دیتابیس را فراهم کرده است. این کار با کمک بسته DBMS_MLE امکان پذیر است:
DECLARE ctx varchar2(50) ; BEGIN ctx := DBMS_MLE.create_context(); DBMS_MLE.eval(ctx, 'JAVASCRIPT', q'~console.log("www.usefzadeh.com");~'); DBMS_MLE.drop_context(ctx); END; / www.usefzadeh.com
در نسخه 23c قابلیتهای دیگری هم در این زمینه ارائه شد که یکی از آنها، امکان بارگذاری و استفاده از ماژولهای JavaScript در دیتابیس اوراکل است این قابلیت می تواند در زمینه های مختلفی راهگشا باشد و حجم کدنویسی را کاهش دهد.
به عنوان مثال، در مطلب “قابلیت SQL domain در اوراکل 23c” در مورد محدود کردن فرمت ورودی ها از طریق check constraint، trigger و sql domain نکاتی را ارائه کردیم و توضیح دادیم که چگونه می توانیم ورودی های ستونی مثل email را کنترل کنیم تا در قالبی مشخص درج شوند.
در این قبیل چالشها، ماژولهای JavaScript هم می توانند به کمک ما بیایند و با استفاده از آنها هم می توانیم بسیاری از این دست نیازمندیها را در دیتابیس مرتفع کنیم. برای مثال، ماژول validator در مورد کنترل ساختار ورودی ها می تواند مورد استفاده قرار بگیرد.
در ادامه نحوه بارگذاری و استفاده از ماژول validator.js که شامل توابع متعددی هم هست را توضیح خواهیم داد(با ایده گرفتن از مقاله آقای Martin Bach).
در ابتدا باید این ماژول را دانلود و روی سرور قرار دهیم.
C:\Users\Usef>curl -Lo validator.js https://cdn.jsdelivr.net/npm/validator@latest/+esm % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 118k 0 118k 0 0 186k 0 --:--:-- --:--:-- --:--:-- 186k
[root@OEL8 ~]# cd /JavaScript [root@OEL8 JavaScript]# ls -l -rw-r--r-- 1 oracle oinstall 121216 Aug 30 16:36 validator.js
برای بارگذاری این فایل در دیتابیس، نیاز به ساخت directory در دیتابیس داریم با دستور زیر این دایرکتوری را ایجاد می کنیم:
SQL> show user USER is "USEF"
SQL> create or replace directory DR_JavaScript as '/JavaScript'; Directory created.
بعد از ایجاد دایرکتوری، ماژول را با دستور زیر بارگذاری می کنیم:
SQL> show user USER is "USEF"
SQL> create mle module validator language javascript using bfile (DR_JavaScript, 'validator.js'); / MLE module created.
اسامی ماژولهای JAVASCRIPT موجود در دیتابیس را می توانیم با دستور زیر ببنیم:
SQL> select MODULE_NAME from user_mle_modules where LANGUAGE_NAME='JAVASCRIPT'; MODULE_NAME --------------------- VALIDATOR
برای استفاده از این ماژول، تابعی را در دیتابیس ایجاد می کنیم:
SQL> create or replace function isEmail( p_str varchar2 ) return boolean as mle module validator signature 'default.isEmail(string)'; / Function created.
با کمک تابع isEmail بررسی می کنیم عبارت ورودی، فرمت مورد نظر برای Email را دارد؟
SQL> select isEmail('vahidusefzadeh') as "Email?"; Email? ----------- FALSE
SQL> select isEmail('vahidusefzadeh@gmail') as "Email?"; Email? ----------- FALSE
SQL> select isEmail('vahidusefzadeh@gmail.com') as "Email?"; Email? ----------- TRUE
در ادامه با دو تابع دیگر این ماژول هم آشنا می شویم.
تابع isURL:
SQL> create or replace function isURL( p_str varchar2 ) return boolean as mle module validator signature 'default.isURL(string)'; / Function created.
SQL> select isURL('usefzadeh') as "isURL?"; isURL? ----------- FALSE
SQL> select isURL('www.usefzadeh.com') as "isURL?"; isURL? ----------- TRUE
تابع isDate:
SQL> create or replace function isDate( p_str varchar2 ) return boolean as mle module validator signature 'default.isDate(string)'; / Function created.
SQL> select isDate('2023-01-98') as "isDate?"; isDate? ----------- FALSE
SQL> select isDate('2023-01-01') as "isDate?"; isDate? ----------- TRUE
بسیار عالی مهندس عزیر