-- this is GOOFY to do on the database tier, but it is a quick-n-
-- sleazy classic procedure involving input-output parameters d
-- (parameters used as BOTH input and output)
--
-- by: Sharon Tuttle
-- last modified: 3-13-13
----------
-- signature: procedure swap: INOUT number INOUT number -> void
-- purpose: expects two arguments whose values CAN be changed,
-- and returns nothing, but does have the side-effect that
-- afterwards the first argument has the value of the
-- second argument, and vice versa
create or replace procedure swap(value1 IN OUT number, value2 IN OUT number) as
temp number;
begin
temp := value1;
value1 := value2;
value2 := temp;
end;
/
show errors
set serveroutput on
prompt =========================================
prompt TESTING swap
-- setting two
var num1 number
var num2 number
exec :num1 := 13
exec :num2 := 48
prompt ==============
prompt before swap call:
print num1
print num2
exec swap(:num1, :num2)
prompt ==============
prompt AFTER swap call:
prompt num1 WAS 13; it is NOW:
print num1
prompt num2 WAS 48; it is NOW:
print num2