آشنایی با مکان نما استاتیک GBase 8s

Summarize this content to 400 words in Persian Lang
GBase 8s یک سیستم پایگاه داده سازگار با زبان برنامه نویسی PL/SQL Oracle است که از انواع داده ها، اعلان و تخصیص متغیرها، ترتیب، انتخاب، کنترل حلقه، جمع آوری و ثبت اشیاء، SQL استاتیک و پویا و مدیریت خطا پشتیبانی می کند. این مقاله بر روی استفاده از مکان نماهای ثابت در برنامه نویسی پایگاه داده تمرکز دارد. GBase 8s دو نوع نشانگر ثابت را ارائه می دهد: مکان نماهای ضمنی و مکان نماهای آشکار. این مقاله توضیح مفصلی در مورد مکان نماهای ایستا در پایگاه داده GBase 8s، از جمله موارد استفاده، ویژگی ها و نحوه استفاده موثر از آنها برای بهبود کارایی عملیات پایگاه داده ارائه می دهد.
مکان نماهای ایستا نشانگرهای فقط خواندنی هستند که همیشه مجموعه نتایج را همانطور که در زمان باز شدن مکان نما بود نمایش می دهند و پرس و جوی استفاده شده توسط مکان نما استاتیک در زمان کامپایل تعیین می شود.
نشانگرهای ضمنی
مکان نماهای ضمنی نیازی به تعریف صریح توسط کاربر ندارند. هر زمان که یک عبارت DML (INSERT, UPDATE, DELETE) یا a SELECT…INTO دستور در PL/SQL اجرا می شود، یک مکان نما ضمنی به طور خودکار اعلام و مدیریت می شود.
1. ویژگی های نشانگر ضمنی
مدیریت شده توسط PL/SQL، بدون نیاز به DECLARE، OPEN، FETCH، یا CLOSE عملیات
باید استفاده کرد SELECT cur_name INTO [variable or other data types]. این کار را انجام می دهد OPEN، FETCH، و CLOSE عملیات
نشانگرهای ضمنی می توانند تنها یک ردیف را برگردانند. اگر رکورد منطبقی پیدا نشد، الف NO_DATA_FOUND استثنا انداخته می شود. اگر چندین رکورد برگردانده شود، الف TOO_MANY_ROWS استثنا رخ می دهد.
ویژگی های مکان نما را فقط با استفاده از علامت می توان بررسی کرد SQL% خانواده
برای هر گونه استفاده از SQL%ISOPEN، نتیجه همیشه است FALSE زیرا مکان نماهای ضمنی توسط PL/SQL مدیریت می شوند.
قبل از باز شدن مکان نما ضمنی، با استفاده از SQL%FOUND، SQL%NOTFOUND، یا SQL%ROWCOUNT منجر خواهد شد NULL.
2. ویژگی های پشتیبانی شده برای مکان نماهای ضمنی
SQL%ISOPEN
معنی: نشان می دهد که آیا مکان نما باز است یا خیر.
همیشه برمی گردد FALSE زیرا نشانگرهای ضمنی همیشه پس از اجرا بسته می شوند.
SQL%FOUND
معنی: نشان می دهد که آیا ردیفی تحت تأثیر قرار گرفته است یا خیر.
برمی گرداند NULL: نه SELECT یا دستور DML اجرا شده است.
برمی گرداند TRUE: یک یا چند ردیف تحت تأثیر قرار گرفتند.
برمی گرداند FALSE: هیچ ردیفی تحت تأثیر قرار نگرفت.
SQL%NOTFOUND
معنی: نشان می دهد که آیا هیچ ردیفی تحت تأثیر قرار نگرفته است یا خیر.
برمی گرداند NULL: نه SELECT یا دستور DML اجرا شده است.
برمی گرداند TRUE: هیچ ردیفی تحت تأثیر قرار نگرفت.
برمی گرداند FALSE: یک یا چند ردیف تحت تأثیر قرار گرفتند.
SQL%ROWCOUNT
معنی: تعداد ردیف های تحت تأثیر را برمی گرداند.
برمی گرداند NULL: نه SELECT یا دستور DML اجرا شده است.
در غیر این صورت، تعداد ردیف های تحت تأثیر را برمی گرداند.
مکان نماهای صریح
1. ویژگی های مکان نما آشکار
نشانگرهای واضح توسط کاربر تعریف و مدیریت می شوند.
آنها باید اعلان شده و با یک عبارت پرس و جو مرتبط شوند.
آنها را نمی توان مقادیری نسبت داد، در عبارات استفاده کرد، یا به عنوان پارامتر به زیربرنامه ها یا متغیرهای میزبان ارسال کرد.
در مواقعی که انعطاف پذیری لازم است باید از متغیرهای مکان نما استفاده شود.
2. مراحل استفاده از مکان نماهای واضح
1) مکان نما را تعریف کنید: مکان نما و عبارت پرس و جو مربوط به آن را اعلام کنید.2) مکان نما را باز کنید: کوئری مرتبط را اجرا کنید، مجموعه نتیجه را در فضای کاری مکان نما بارگیری کنید و مکان نما را قبل از اولین ردیف مجموعه نتایج قرار دهید.3) واکشی داده ها: مکان نما را در صورت نیاز به موقعیت مناسب در مجموعه نتایج حرکت دهید.4) مکان نما را ببندید: پس از استفاده از مکان نما، آن را ببندید تا منابع آزاد شوند.
3. استفاده از مکان نما
اعلامیه مکان نما و تعریف
DECLARE
— Declare cursor c1
CURSOR c1 RETURN departments%ROWTYPE;
— Declare and define cursor c2
CURSOR c2 IS SELECT employee_id, job_id, salary FROM employees WHERE salary > 2000;
— Define cursor c1
CURSOR c1 RETURN departments%ROWTYPE IS SELECT * FROM departments WHERE department_id = 110;
— Declare cursor c3
CURSOR c3;
— Define cursor c3
CURSOR c3 IS SELECT * FROM locations WHERE country_id = ‘JP’;
BEGIN
NULL;
END;
/
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
واکشی داده ها در متغیرهای منظم
— Create table
CREATE TABLE t(id INT, name VARCHAR(10));
INSERT INTO t VALUES(1, ‘jack’);
INSERT INTO t VALUES(2, ‘jerry’);
DECLARE
v1 INT;
v2 VARCHAR(10);
CURSOR c1 IS SELECT id, name FROM t;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO v1, v2;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(‘id = ‘ || v1);
DBMS_OUTPUT.PUT_LINE(‘name=” || v2);
END LOOP;
CLOSE c1;
END;
/
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
واکشی داده ها در متغیرهای رکورد
— Create table
CREATE TABLE t(id INT, name VARCHAR(10));
INSERT INTO t VALUES(1, “jack’);
INSERT INTO t VALUES(2, ‘jerry’);
DECLARE
v t%ROWTYPE;
CURSOR c1 IS SELECT id, name FROM t;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO v;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(‘id = ‘ || v.id);
DBMS_OUTPUT.PUT_LINE(‘name=” || v.name);
END LOOP;
CLOSE c1;
END;
/
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
استفاده از مکان نما با پارامترها (باز کردن قبل از تماس)
— Create table
CREATE TABLE t(id INT, name VARCHAR(10));
INSERT INTO t VALUES(1, “jack’);
INSERT INTO t VALUES(2, ‘jerry’);
DECLARE
CURSOR c (c_id INT) IS SELECT name FROM t WHERE id = c_id;
— Define procedure
PROCEDURE p1 IS
p_name VARCHAR(10);
BEGIN
LOOP
FETCH c INTO p_name;
EXIT WHEN c%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(‘result is: ‘ || p_name);
END LOOP;
END;
BEGIN
OPEN c(2); — Open the cursor
p1; — Call the procedure
CLOSE c; — Close the cursor
END;
/
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
با این مقدمه مفصل، اکنون درک خوبی از نشانگرهای استاتیک در GBase 8s و نحوه اعمال آنها دارید. استفاده صحیح از مکان نماها نه تنها می تواند کارایی پرس و جوهای پایگاه داده را بهبود بخشد، بلکه کد شما را شفاف تر و نگهداری آسان تر می کند. امیدوارم این مقاله به شما در استفاده بهتر از عملکرد مکان نما GBase 8s کمک کند. با تشکر از شما برای خواندن!
GBase 8s یک سیستم پایگاه داده سازگار با زبان برنامه نویسی PL/SQL Oracle است که از انواع داده ها، اعلان و تخصیص متغیرها، ترتیب، انتخاب، کنترل حلقه، جمع آوری و ثبت اشیاء، SQL استاتیک و پویا و مدیریت خطا پشتیبانی می کند. این مقاله بر روی استفاده از مکان نماهای ثابت در برنامه نویسی پایگاه داده تمرکز دارد. GBase 8s دو نوع نشانگر ثابت را ارائه می دهد: مکان نماهای ضمنی و مکان نماهای آشکار. این مقاله توضیح مفصلی در مورد مکان نماهای ایستا در پایگاه داده GBase 8s، از جمله موارد استفاده، ویژگی ها و نحوه استفاده موثر از آنها برای بهبود کارایی عملیات پایگاه داده ارائه می دهد.
مکان نماهای ایستا نشانگرهای فقط خواندنی هستند که همیشه مجموعه نتایج را همانطور که در زمان باز شدن مکان نما بود نمایش می دهند و پرس و جوی استفاده شده توسط مکان نما استاتیک در زمان کامپایل تعیین می شود.
نشانگرهای ضمنی
مکان نماهای ضمنی نیازی به تعریف صریح توسط کاربر ندارند. هر زمان که یک عبارت DML (INSERT, UPDATE, DELETE) یا a SELECT...INTO
دستور در PL/SQL اجرا می شود، یک مکان نما ضمنی به طور خودکار اعلام و مدیریت می شود.
1. ویژگی های نشانگر ضمنی
- مدیریت شده توسط PL/SQL، بدون نیاز به
DECLARE
،OPEN
،FETCH
، یاCLOSE
عملیات - باید استفاده کرد
SELECT cur_name INTO [variable or other data types]
. این کار را انجام می دهدOPEN
،FETCH
، وCLOSE
عملیات - نشانگرهای ضمنی می توانند تنها یک ردیف را برگردانند. اگر رکورد منطبقی پیدا نشد، الف
NO_DATA_FOUND
استثنا انداخته می شود. اگر چندین رکورد برگردانده شود، الفTOO_MANY_ROWS
استثنا رخ می دهد. - ویژگی های مکان نما را فقط با استفاده از علامت می توان بررسی کرد
SQL%
خانواده - برای هر گونه استفاده از
SQL%ISOPEN
، نتیجه همیشه استFALSE
زیرا مکان نماهای ضمنی توسط PL/SQL مدیریت می شوند. - قبل از باز شدن مکان نما ضمنی، با استفاده از
SQL%FOUND
،SQL%NOTFOUND
، یاSQL%ROWCOUNT
منجر خواهد شدNULL
.
2. ویژگی های پشتیبانی شده برای مکان نماهای ضمنی
SQL%ISOPEN
- معنی: نشان می دهد که آیا مکان نما باز است یا خیر.
- همیشه برمی گردد
FALSE
زیرا نشانگرهای ضمنی همیشه پس از اجرا بسته می شوند.
SQL%FOUND
- معنی: نشان می دهد که آیا ردیفی تحت تأثیر قرار گرفته است یا خیر.
- برمی گرداند
NULL
: نهSELECT
یا دستور DML اجرا شده است. - برمی گرداند
TRUE
: یک یا چند ردیف تحت تأثیر قرار گرفتند. - برمی گرداند
FALSE
: هیچ ردیفی تحت تأثیر قرار نگرفت.
SQL%NOTFOUND
- معنی: نشان می دهد که آیا هیچ ردیفی تحت تأثیر قرار نگرفته است یا خیر.
- برمی گرداند
NULL
: نهSELECT
یا دستور DML اجرا شده است. - برمی گرداند
TRUE
: هیچ ردیفی تحت تأثیر قرار نگرفت. - برمی گرداند
FALSE
: یک یا چند ردیف تحت تأثیر قرار گرفتند.
SQL%ROWCOUNT
- معنی: تعداد ردیف های تحت تأثیر را برمی گرداند.
- برمی گرداند
NULL
: نهSELECT
یا دستور DML اجرا شده است. - در غیر این صورت، تعداد ردیف های تحت تأثیر را برمی گرداند.
مکان نماهای صریح
1. ویژگی های مکان نما آشکار
- نشانگرهای واضح توسط کاربر تعریف و مدیریت می شوند.
- آنها باید اعلان شده و با یک عبارت پرس و جو مرتبط شوند.
- آنها را نمی توان مقادیری نسبت داد، در عبارات استفاده کرد، یا به عنوان پارامتر به زیربرنامه ها یا متغیرهای میزبان ارسال کرد.
- در مواقعی که انعطاف پذیری لازم است باید از متغیرهای مکان نما استفاده شود.
2. مراحل استفاده از مکان نماهای واضح
1) مکان نما را تعریف کنید: مکان نما و عبارت پرس و جو مربوط به آن را اعلام کنید.
2) مکان نما را باز کنید: کوئری مرتبط را اجرا کنید، مجموعه نتیجه را در فضای کاری مکان نما بارگیری کنید و مکان نما را قبل از اولین ردیف مجموعه نتایج قرار دهید.
3) واکشی داده ها: مکان نما را در صورت نیاز به موقعیت مناسب در مجموعه نتایج حرکت دهید.
4) مکان نما را ببندید: پس از استفاده از مکان نما، آن را ببندید تا منابع آزاد شوند.
3. استفاده از مکان نما
اعلامیه مکان نما و تعریف
DECLARE
-- Declare cursor c1
CURSOR c1 RETURN departments%ROWTYPE;
-- Declare and define cursor c2
CURSOR c2 IS SELECT employee_id, job_id, salary FROM employees WHERE salary > 2000;
-- Define cursor c1
CURSOR c1 RETURN departments%ROWTYPE IS SELECT * FROM departments WHERE department_id = 110;
-- Declare cursor c3
CURSOR c3;
-- Define cursor c3
CURSOR c3 IS SELECT * FROM locations WHERE country_id = 'JP';
BEGIN
NULL;
END;
/
واکشی داده ها در متغیرهای منظم
-- Create table
CREATE TABLE t(id INT, name VARCHAR(10));
INSERT INTO t VALUES(1, 'jack');
INSERT INTO t VALUES(2, 'jerry');
DECLARE
v1 INT;
v2 VARCHAR(10);
CURSOR c1 IS SELECT id, name FROM t;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO v1, v2;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('id = ' || v1);
DBMS_OUTPUT.PUT_LINE('name=" || v2);
END LOOP;
CLOSE c1;
END;
/
واکشی داده ها در متغیرهای رکورد
-- Create table
CREATE TABLE t(id INT, name VARCHAR(10));
INSERT INTO t VALUES(1, "jack');
INSERT INTO t VALUES(2, 'jerry');
DECLARE
v t%ROWTYPE;
CURSOR c1 IS SELECT id, name FROM t;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO v;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('id = ' || v.id);
DBMS_OUTPUT.PUT_LINE('name=" || v.name);
END LOOP;
CLOSE c1;
END;
/
استفاده از مکان نما با پارامترها (باز کردن قبل از تماس)
-- Create table
CREATE TABLE t(id INT, name VARCHAR(10));
INSERT INTO t VALUES(1, "jack');
INSERT INTO t VALUES(2, 'jerry');
DECLARE
CURSOR c (c_id INT) IS SELECT name FROM t WHERE id = c_id;
-- Define procedure
PROCEDURE p1 IS
p_name VARCHAR(10);
BEGIN
LOOP
FETCH c INTO p_name;
EXIT WHEN c%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('result is: ' || p_name);
END LOOP;
END;
BEGIN
OPEN c(2); -- Open the cursor
p1; -- Call the procedure
CLOSE c; -- Close the cursor
END;
/
با این مقدمه مفصل، اکنون درک خوبی از نشانگرهای استاتیک در GBase 8s و نحوه اعمال آنها دارید. استفاده صحیح از مکان نماها نه تنها می تواند کارایی پرس و جوهای پایگاه داده را بهبود بخشد، بلکه کد شما را شفاف تر و نگهداری آسان تر می کند. امیدوارم این مقاله به شما در استفاده بهتر از عملکرد مکان نما GBase 8s کمک کند. با تشکر از شما برای خواندن!