procedure در pl/sql

پراسیژر ها بر خلاف Function ها خروجی ندارند. پارامتر ورودی، خروجی و ورودی خروجی می توانند داشته باشند که با out، in و in out مشخص می شوند.  فرمت کلی pricedure در pl/sql به صورت زیر است. پراسیژر زیر با هر بار فراخوانی یک علامت * چاپ می کند. در این پراسیژر متغیر number از نوع varchar است و ورودی می باشد.  

  


create or replace procedure myprocedure(number in varchar)
is
begin
dbms_output.put_line('*');
end;

Cursor در pl/sql

در صورتی که در pl/sql لازم باشد که بخشی از دیتا را انتخاب کنیم و روی آنها عملیاتی را انجام بدهیم، Loop بزنیم و ... باید از Cursor استفاده کنیم. در ادامه کرسری نوشته شده است که به ازای رکوردهای موجود در جدول myTable علامت * چاپ می کند: 

 

declare
   cursor myCursor is
  select * from  mytable;
 
begin
  for rec in myCursor
  loop      
   dbms_output.put_line('*');
   end loop;
 
end;

Test Window در pl/sql

در pl/sql در منوی New منویی به نام Test Window وجود دارد. در این Window می توان Anonymous Block نوشت و با زدن کلید F8 آنها را اجرا کرد. در قسمت Declare متغیرها تعریف می شود و باید دقت کرد که در پایان هر دستور علامت «;» باید قرار داده شود. 

  

declare
  -- Local variables here
  i integer;
begin
  -- Test statements here
end;

ServiceBehaviour در WCF

روی کلاس های سرویس WCF یک Attribute به نام ServiceBehaviour  قرار می گیرد که

InstanceContextMode را برای این کلاس سرویس مشخص می کند. InstanceContextMode یکی از مقادیر زیر را می تواند داشته باشد:  

  • PerSession  
  • PerCall: به ازای هر بار فراخوانی از سمت سرویس یک Instance استفاده می شود.
  • Single: فقط یک Instance از سرویس ایجاد می شود و برای همه درخواست هایی که از سمت کلاینت می آیند مورد استفاده قرار می گیرد.   

به عنوان مثال Attribute به صورت زیر قبل از کلاس سرویس WCF قرار می گیرد: 

[

ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]

اسکریپت برای به دست آوردن شغلی که بیشترین تعداد کارمند را دارد

به عنوان مثال در جدول mytable مشخصات کارمندان به همراه نوع شغل آنها ثبت شده است. فیلد jobid در این جدول نوع شغل کارمند را مشخص می کند. با اسکریپت زیر می توان شغلی که بیشترین تعداد کارمند را دارد را به دست آورد: 


SELECT mytable.jobid, COUNT(*) FROM mytable
GROUP BY mytable.jobid
HAVING COUNT(*) =
(
SELECT max(count(*)) FROM mytable
GROUP BY mytable.jobid
)