اوراکل 23c – امکان استفاده از ماژولهای JavaScript در دیتابیس اوراکل

در نسخه 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

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

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

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