GBase数据库 | درک متغیرهای مکان نما در GBase 8s: افزایش کارایی عملیات پایگاه داده

Summarize this content to 400 words in Persian Lang
در میان سری های پایگاه داده GBase (GBase数据库)، GBase 8s برای سناریوهای OLTP است و با زبان برنامه نویسی PL/SQL Oracle سازگار است. برای استفاده از نحو PL/SQL، تنظیم آن ضروری است SQLMODE متغیر محیطی به ORACLE، به عنوان پیش فرض SQLMODE در GBase 8s تنظیم شده است GBASE، که از PL/SQL پشتیبانی نمی کند. این مقاله متغیرهای مکان نما را در حالت سازگار با Oracle در GBase 8s معرفی می کند و کاربرد، ویژگی ها و نحوه استفاده از آنها برای افزایش کارایی عملیات پایگاه داده را پوشش می دهد.
متغیرهای مکان نما و مکان نما دو مفهوم متفاوت هستند. مانند مکان نماها، متغیرهای مکان نما به ردیف فعلی در مجموعه نتایج چند ردیفی اشاره می کنند. با این حال، در حالی که مکان نماها ثابت هستند، متغیرهای مکان نما پویا هستند. بر خلاف مکان نماهای سنتی، متغیرهای مکان نما به پرس و جوهای خاصی محدود نمی شوند و به آنها اجازه می دهد برای هر پرس و جوی سازگار باز شوند و انعطاف پذیری بیشتری را فراهم می کنند.
ویژگی های متغیر مکان نما
یک متغیر مکان نما شباهت هایی با مکان نما آشکار دارد اما دارای ویژگی های متمایز است:
محدود به یک پرس و جو نیست: متغیرهای مکان نما را می توان با پرس و جوهای مختلفی مرتبط کرد.
قابل واگذاری است: به متغیرهای مکان نما می توان مقادیری نسبت داد.
سازگار با بیان: متغیرهای مکان نما را می توان در عبارات استفاده کرد.
می تواند به عنوان پارامتر ارسال شود: متغیرهای مکان نما، به طور خاص SYS_REFCURSOR، می تواند بین زیربرنامه ها برای انتقال مجموعه های نتیجه ارسال شود.
نمی توان پارامترها را دریافت کرد: پرس و جوهای مرتبط با متغیرهای مکان نما می توانند شامل متغیرها به جای پارامترها باشند.
ایجاد متغیر مکان نما
برای ایجاد متغیر مکان نما:
نوع مکان نما را تعریف کنید، سپس یک متغیر از آن نوع را اعلام کنید.
اعلامیه از SYS_REFCURSOR متغیر. یک متغیر مکان نما به عنوان a نیز شناخته می شود مکان نما REF.
نحو REF CURSOR
TYPE type_name IS REF CURSOR [ RETURN return_type ]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اگر الف return_type مشخص شده است، REF CURSOR تعریف شده و متغیر اعلام شده انواع قوی هستند. در غیر این صورت، آنها از انواع ضعیف هستند. SYS_REFCURSOR یک نوع ضعیف است متغیرهای مکان نما با تایپ قوی را می توان با پرس و جوهایی که نوع مشخص شده را برمی گرداند مرتبط کرد، در حالی که متغیرهای مکان نما با تایپ ضعیف را می توان با هر پرس و جوی مرتبط کرد.
را OPEN FOR بیانیه
وقتی دیگر OPEN FOR عبارات با متغیرهای مکان نما استفاده می شوند، متغیر مکان نما را می توان بدون بستن آن دوباره باز کرد. پس از باز کردن مجدد، پرس و جو قبلی مرتبط با متغیر مکان نما از بین خواهد رفت. نیازی به استفاده از CLOSE بیانیه، زیرا متغیرهای مکان نما زمانی که دیگر مورد نیاز نیستند به طور خودکار بسته می شوند. پس از بسته شدن، داده ها قابل بازیابی یا ارجاع نیستند، اگرچه می توان آنها را دوباره باز کرد.
واکشی داده ها از متغیرهای مکان نما
هنگامی که یک متغیر مکان نما باز شد، می توانید از آن استفاده کنید FETCH عبارت برای بازیابی ردیف ها از مجموعه نتایج پرس و جو.
نحو
FETCH cursor_variable INTO into_clause
FETCH cursor_variable BULK COLLECT INTO bulk_collect_into_clause [ LIMIT numeric_expression ]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
into_clause: لیستی از متغیرها یا یک متغیر رکورد منفرد سازگار با هر ستون از کوئری برگشتی.
bulk_collect_into_clause: یک یا چند مجموعه را برای ذخیره سطرهای متعدد واکشی شده توسط FETCH بیانیه را LIMIT بند تعداد ردیف های بازیابی شده در یک عملیات واحد را محدود می کند.
استفاده از متغیرهای مکان نما
جدول پایه
CREATE TABLE t (id INT, name VARCHAR(10));
INSERT INTO t VALUES(1,’Jerry’);
INSERT INTO t VALUES(2,’Jack’);
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اعلام متغیر مکان نما
DECLARE
TYPE tcurtyp IS REF CURSOR RETURN t%ROWTYPE; — Strong cursor type
TYPE genericcurtyp IS REF CURSOR; — Weak cursor type
cursor1 tcurtyp; — Strong cursor variable
cursor2 genericcurtyp; — Weak cursor variable
my_cursor SYS_REFCURSOR; — Weak cursor variable
BEGIN
NULL;
END;
/
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ترکیب با Dynamic SQL
declare
cv SYS_REFCURSOR;
v_name varchar(10);
query_1 varchar(200) := ‘select name from t’;
begin
open cv for query_1;
fetch cv into v_name;
dbms_output.put_line(‘name=”||v_name);
end;
/
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
واکشی مکان نما به انواع رکورد
declare
TYPE ty_1 IS REF CURSOR;
v1 t.id%type;
v2 t.name%type;
cursor1 ty_1;
begin
open cursor1 for select * from t;
loop
fetch cursor1 into v1,v2;
exit when cursor1%notfound;
dbms_output.put_line(“id = ‘||v1||’, name=”||v2);
end loop;
close cursor1;
end;
/
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
استفاده از متغیرهای مکان نما به عنوان پارامترهای رویه
توجه داشته باشید: فقط SYS_REFCURSOR پشتیبانی از استفاده به عنوان پارامترهای ورودی/خروجی. REF CURSOR نمی کند.
CREATE OR REPLACE PACKAGE t_data AS
PROCEDURE open_t_cv (t_cv IN OUT SYS_REFCURSOR);
END t_data;
/
CREATE OR REPLACE PACKAGE BODY t_data AS
PROCEDURE open_t_cv (t_cv IN OUT SYS_REFCURSOR) IS
BEGIN
OPEN t_cv FOR SELECT * FROM t;
END open_t_cv;
END t_data;
/
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
متغیرهای مکان نما یک ویژگی ارزشمند در GBase 8s هستند که انعطاف پذیری و کارایی را در عملیات پایگاه داده افزایش می دهند و گزینه های برنامه نویسی بیشتری را به توسعه دهندگان ارائه می دهند. امیدواریم این راهنما درک جامعی از متغیرهای مکان نما و نحوه استفاده مؤثر از آنها برای بهبود مهارت های برنامه نویسی پایگاه داده ارائه دهد. اگر سؤالات بیشتری در مورد متغیرهای مکان نما یا پایگاه داده GBase (GBase数据库) دارید، با خیال راحت بیشتر کاوش کنید و برای پشتیبانی و منابع اضافی تماس بگیرید.
در میان سری های پایگاه داده GBase (GBase数据库)، GBase 8s برای سناریوهای OLTP است و با زبان برنامه نویسی PL/SQL Oracle سازگار است. برای استفاده از نحو PL/SQL، تنظیم آن ضروری است
SQLMODE
متغیر محیطی بهORACLE
، به عنوان پیش فرضSQLMODE
در GBase 8s تنظیم شده استGBASE
، که از PL/SQL پشتیبانی نمی کند. این مقاله متغیرهای مکان نما را در حالت سازگار با Oracle در GBase 8s معرفی می کند و کاربرد، ویژگی ها و نحوه استفاده از آنها برای افزایش کارایی عملیات پایگاه داده را پوشش می دهد.
متغیرهای مکان نما و مکان نما دو مفهوم متفاوت هستند. مانند مکان نماها، متغیرهای مکان نما به ردیف فعلی در مجموعه نتایج چند ردیفی اشاره می کنند. با این حال، در حالی که مکان نماها ثابت هستند، متغیرهای مکان نما پویا هستند. بر خلاف مکان نماهای سنتی، متغیرهای مکان نما به پرس و جوهای خاصی محدود نمی شوند و به آنها اجازه می دهد برای هر پرس و جوی سازگار باز شوند و انعطاف پذیری بیشتری را فراهم می کنند.
ویژگی های متغیر مکان نما
یک متغیر مکان نما شباهت هایی با مکان نما آشکار دارد اما دارای ویژگی های متمایز است:
- محدود به یک پرس و جو نیست: متغیرهای مکان نما را می توان با پرس و جوهای مختلفی مرتبط کرد.
- قابل واگذاری است: به متغیرهای مکان نما می توان مقادیری نسبت داد.
- سازگار با بیان: متغیرهای مکان نما را می توان در عبارات استفاده کرد.
-
می تواند به عنوان پارامتر ارسال شود: متغیرهای مکان نما، به طور خاص
SYS_REFCURSOR
، می تواند بین زیربرنامه ها برای انتقال مجموعه های نتیجه ارسال شود. - نمی توان پارامترها را دریافت کرد: پرس و جوهای مرتبط با متغیرهای مکان نما می توانند شامل متغیرها به جای پارامترها باشند.
ایجاد متغیر مکان نما
برای ایجاد متغیر مکان نما:
- نوع مکان نما را تعریف کنید، سپس یک متغیر از آن نوع را اعلام کنید.
-
اعلامیه از
SYS_REFCURSOR
متغیر. یک متغیر مکان نما به عنوان a نیز شناخته می شود مکان نما REF.
نحو REF CURSOR
TYPE type_name IS REF CURSOR [ RETURN return_type ]
اگر الف return_type
مشخص شده است، REF CURSOR تعریف شده و متغیر اعلام شده انواع قوی هستند. در غیر این صورت، آنها از انواع ضعیف هستند. SYS_REFCURSOR
یک نوع ضعیف است متغیرهای مکان نما با تایپ قوی را می توان با پرس و جوهایی که نوع مشخص شده را برمی گرداند مرتبط کرد، در حالی که متغیرهای مکان نما با تایپ ضعیف را می توان با هر پرس و جوی مرتبط کرد.
را OPEN FOR
بیانیه
وقتی دیگر OPEN FOR
عبارات با متغیرهای مکان نما استفاده می شوند، متغیر مکان نما را می توان بدون بستن آن دوباره باز کرد. پس از باز کردن مجدد، پرس و جو قبلی مرتبط با متغیر مکان نما از بین خواهد رفت. نیازی به استفاده از CLOSE
بیانیه، زیرا متغیرهای مکان نما زمانی که دیگر مورد نیاز نیستند به طور خودکار بسته می شوند. پس از بسته شدن، داده ها قابل بازیابی یا ارجاع نیستند، اگرچه می توان آنها را دوباره باز کرد.
واکشی داده ها از متغیرهای مکان نما
هنگامی که یک متغیر مکان نما باز شد، می توانید از آن استفاده کنید FETCH
عبارت برای بازیابی ردیف ها از مجموعه نتایج پرس و جو.
نحو
FETCH cursor_variable INTO into_clause
FETCH cursor_variable BULK COLLECT INTO bulk_collect_into_clause [ LIMIT numeric_expression ]
-
into_clause
: لیستی از متغیرها یا یک متغیر رکورد منفرد سازگار با هر ستون از کوئری برگشتی. -
bulk_collect_into_clause
: یک یا چند مجموعه را برای ذخیره سطرهای متعدد واکشی شده توسطFETCH
بیانیه راLIMIT
بند تعداد ردیف های بازیابی شده در یک عملیات واحد را محدود می کند.
استفاده از متغیرهای مکان نما
جدول پایه
CREATE TABLE t (id INT, name VARCHAR(10));
INSERT INTO t VALUES(1,'Jerry');
INSERT INTO t VALUES(2,'Jack');
اعلام متغیر مکان نما
DECLARE
TYPE tcurtyp IS REF CURSOR RETURN t%ROWTYPE; -- Strong cursor type
TYPE genericcurtyp IS REF CURSOR; -- Weak cursor type
cursor1 tcurtyp; -- Strong cursor variable
cursor2 genericcurtyp; -- Weak cursor variable
my_cursor SYS_REFCURSOR; -- Weak cursor variable
BEGIN
NULL;
END;
/
ترکیب با Dynamic SQL
declare
cv SYS_REFCURSOR;
v_name varchar(10);
query_1 varchar(200) := 'select name from t';
begin
open cv for query_1;
fetch cv into v_name;
dbms_output.put_line('name="||v_name);
end;
/
واکشی مکان نما به انواع رکورد
declare
TYPE ty_1 IS REF CURSOR;
v1 t.id%type;
v2 t.name%type;
cursor1 ty_1;
begin
open cursor1 for select * from t;
loop
fetch cursor1 into v1,v2;
exit when cursor1%notfound;
dbms_output.put_line("id = '||v1||', name="||v2);
end loop;
close cursor1;
end;
/
استفاده از متغیرهای مکان نما به عنوان پارامترهای رویه
توجه داشته باشید: فقط SYS_REFCURSOR
پشتیبانی از استفاده به عنوان پارامترهای ورودی/خروجی. REF CURSOR
نمی کند.
CREATE OR REPLACE PACKAGE t_data AS
PROCEDURE open_t_cv (t_cv IN OUT SYS_REFCURSOR);
END t_data;
/
CREATE OR REPLACE PACKAGE BODY t_data AS
PROCEDURE open_t_cv (t_cv IN OUT SYS_REFCURSOR) IS
BEGIN
OPEN t_cv FOR SELECT * FROM t;
END open_t_cv;
END t_data;
/
متغیرهای مکان نما یک ویژگی ارزشمند در GBase 8s هستند که انعطاف پذیری و کارایی را در عملیات پایگاه داده افزایش می دهند و گزینه های برنامه نویسی بیشتری را به توسعه دهندگان ارائه می دهند. امیدواریم این راهنما درک جامعی از متغیرهای مکان نما و نحوه استفاده مؤثر از آنها برای بهبود مهارت های برنامه نویسی پایگاه داده ارائه دهد. اگر سؤالات بیشتری در مورد متغیرهای مکان نما یا پایگاه داده GBase (GBase数据库) دارید، با خیال راحت بیشتر کاوش کنید و برای پشتیبانی و منابع اضافی تماس بگیرید.