کاراکتر [/] و [;] در اجرای دستورات DDL در اوراكل
شايد بارها براي شما اتفاق افتاده باشد كه در انتهاي دستورات DDL خود در اوراکل از دو علامت Slash و Semicolons استفاده كرده باشيد، در محيط ابزارهايی كه دارای محيط های گرافيكی هستند همانند : Toad-SQL Developer، همچنين در محيط Command Base SQL*PLUS و …
اگر از هردوی اين دو در انتهاي اسكريپت ها استفاده كنيم چه اتفاقی مي افتد. براي درك بهتر به مثال زير توجه كنيد:
drop table foo;
/
create table foo
( id number
,code varchar2(10)
,description varchar2(100)
);
/
create or replace trigger foo_trig_bi
before insert on foo
for each row
begin
:new.id := nvl(:new.id,foo_seq.nextval) ;
end;
/
/
create table foo
( id number
,code varchar2(10)
,description varchar2(100)
);
/
create or replace trigger foo_trig_bi
before insert on foo
for each row
begin
:new.id := nvl(:new.id,foo_seq.nextval) ;
end;
/
توسعه دهنده اسكريپت بالا را در محيط GUI مثل SQL Developer اجرا ميكند و بصورت كامل و بدون خطا اجرا مي شود و خروجی همانند زير را دريافت مي كند.
Table FOO dropped.
Table FOO Created.
Trigger FOO_TRIG_BI Compiled.
Table FOO dropped.
Table FOO Created.
Trigger FOO_TRIG_BI Compiled.
سپس توسعه دهنده اسكريپت بالا را براي DBA مي فرستد كه آن را در محيط Production و در محيط SQL*PLUS اجرا كند، ولي اجرای آن بصورت كامل و صحيح اجرا نمي شود و با خطا مواجه مي شود. زيرا مي خواهد حذف و ايجاد جدول رو دوبار انجام دهد. فقط اینکه برای تریگر (;) نیاز می باشد زیرا پایان یک بلاک PL/SQL را مشخص می کند.
راه حل:
بايد از يكی از دو علامت Slash يا Semicolons را بعد از Drop و Create جدول در اوراکل استفاده نماييم. مانند شكل زير:
2 دیدگاه. پیغام بگذارید
با سلام دوست گرامی آقای مهندس سعید حسن پور
اول تشکر میکنم از اینکه مطالب مفید و بسیار خوبی که در سایتتون قرار میدید و بصورت عمومی در اختیار همه قرار میدید.
دوم اینکه اگه مطلبی در زمینه apex collections از نظر نحوه اجرا و کارکرد و کاربرد آن در سایت بگذارید خیلی ممنون میشم.
سوم اینکه اگه مطالبی داشته باشیم به چه صورت می تونیم در اختیارتون بگذاریم تا در سایتتون قرار دهید.
ممنون و سپاس
با سلام خدمت دوست گرامی
برای اینکه نظر خودتان را اظهار می کنید بسیار سپاسگذارم.
اگر فرصت شود بله حتما مطلبی در این خصوص ارائه خواهد شد.
اجازه دهید بررسی کنم نتیجه را به شما اعلام می کنم.