Fetch a cursor

توضیحات قدم بعدی برای استفاده از cursor، fetch کردن آن است. دستور دستور برای Fetch کردن cursor: 1 FETCH cursor_name INTO variable_list; variable_list: لیست متغیرهایی که می‌خواهید مقادیر cursor را در آن ذخیره کنید. مثال مثال‌هایی از تعریف cursor با پارامتر و بدون پارامتر: 1234567 CURSOR c1IS   SELECT course_number   FROM courses_tbl   WHERE course_name = name_in; FETCH c1 into cnumber;

Cursor Attributes

توضیحات هنگام کار کردن با cursorها ممکن است لازم باشد که وضعیت آن تعیین شود. مثال در زیر مثالی از استفاده cursor attribute را مشاهد می‌کنیم: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 CREATE OR REPLACE […]

Select For Update

توضیحات این دستور این اجازه را می‌دهد تا رکوردی که cursor بر روی آن قرار داد lock شود و لزوما نباید تغییری داد بر روی این رکورد و این lock زمانی برطرف می‌شود که commit یا rollback اتفاق بیافتد. دستور دستور select for update: 1 2 3 4 CURSOR cursor_name IS    select_statement    FOR UPDATE [OF […]

Where Current Of

توضیحات اگر بخواهیم رکوردی که با دستور select for update ، lock شده است را update یا delete کنیم باید از دستور where current of استفاده کنیم. دستور دستور where current of را این‌گونه می‌توان استفاده کرد: 123456 UPDATE table_name  SET set_clause  WHERE CURRENT OF cursor_name; DELETE FROM table_nameWHERE CURRENT OF cursor_name; مثال مثال‌هایی از استفاده where current […]

Enable Foreign Key

توضیحات ممکن است گاهی با کلید خارجی برخورد کنیم که غیر فعال است می‌توان آن را با دستور Alter Table فعال کرد. دستور دستوری که کلید خارجی را فعال می‌کند: 1 2 ALTER TABLE table_name ENABLE CONSTRAINT constraint_name; همچنین می‌توان با دستور زیر کلید خارجی را غیر فعال کرد: 1 2 ALTER TABLE table_name DISABLE […]

Foreign Keys with Cascade Delete

توضیحات کلید خارجی با cascade delete به این معناست که اگر رکوردی در جدول اصلی حذف شود در جدولی که به عنوان کلید خارجی به آن اشاره شده است نیز حذف می‌شود. دستور قابلیت cascade delete را می‌توان با دستور create table یا Alter table فعال کرد: 1234567891011121314151617 CREATE TABLE table_name(  column1 datatype null/not null,  column2 datatype […]

Drop Foreign Keys

توضیحات می‌توان کلید خارجی که قبلا ساخته و فعال شده است را نیز پاک کرد. دستور قابلیت set null را می‌توان با دستور create table یا Alter table فعال کرد: 1 2 ALTER TABLE table_name DROP CONSTRAINT constraint_name; . مثال مثالی از پاک کردن کلید خارجی: 1 2 ALTER TABLE products DROP CONSTRAINT fk_supplier;

Named System Exception

توضیحات Named system exception خطایی است که توسط Pl/Sql نام‌گذاری شده است، و در پکیج استاندارد قرار دارند و نیازی نیست کاربر به آن‌ها نامی اختصاص دهد. دستور در ادامه استفاده از Exception‌ها را در یک تابع و پروسیجر مشاهده می‌کنیم: 123456789101112131415161718192021222324252627282930313233343536373839404142434445 CREATE [OR REPLACE] FUNCTION function_name   [ (parameter [,parameter]) ]   RETURN return_datatypeIS | AS   [declaration_section] BEGIN   executable_section EXCEPTION   WHEN exception_name1 THEN      [statements]    WHEN […]

Named Programmer-Defined Exception

توضیحات گاهی نیاز است که برنامه‌نویس خود exception را تعریف کند که در پکیج استاندارد وجود ندارد. دستور در ادامه استفاده از name programmer-defined exception را در تابع و پروسیجر بررسی می‌کنیم: 1234567891011121314151617181920212223242526272829303132333435363738394041 CREATE [OR REPLACE] PROCEDURE procedure_name   [ (parameter [,parameter]) ]IS   [declaration_section]    exception_name EXCEPTION; BEGIN   executable_section   RAISE exception_name; EXCEPTION   WHEN exception_name THEN      [statements]    WHEN OTHERS THEN      [statements] END [procedure_name];CREATE [OR REPLACE] FUNCTION function_name   [ (parameter [,parameter]) ]   RETURN […]

WHEN OTHERS clause

توضیحات زمانی که exception اتفاق افتاده است ولی هیچ‌کدام از exception‌های تعریف شده توسط برنامه‌نویس یا اوراکل نیست می‌توان از دستور کلی when others استفاده کرد. دستور اکنون به دستور استفاده when others در تابع و پروسیجر می‌پردازیم: 123456789101112131415161718192021222324252627282930313233343536373839404142434445 CREATE [OR REPLACE] PROCEDURE procedure_name   [ (parameter [,parameter]) ]IS   [declaration_section] BEGIN   executable_section EXCEPTION   WHEN exception_name1 THEN      [statements]    WHEN exception_name2 THEN      [statements]    WHEN exception_name_n THEN      [statements]    WHEN OTHERS THEN      [statements] END […]