Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Added remove rooms example
  • Loading branch information
jgebal committed Dec 14, 2016
commit 3a19187880cd96d6100ab243575ad656a59197e0
8 changes: 8 additions & 0 deletions examples/remove_rooms_by_name/remove_rooms_by_name.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
create or replace procedure remove_rooms_by_name( l_name rooms.name%type ) is
begin
if l_name is null then
raise program_error;
end if;
delete from rooms where name like l_name;
end;
/
12 changes: 12 additions & 0 deletions examples/remove_rooms_by_name/rooms.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
create table rooms (
room_key number primary key,
name varchar2(100)
);

create table room_contents (
contents_key number primary key,
room_key number,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a bit simpler:

room_key number references rooms(room_key),

name varchar2(100)
);

alter table room_contents add constraint fk_rooms foreign key (room_key) references rooms (room_key);
13 changes: 13 additions & 0 deletions examples/remove_rooms_by_name/run_remove_rooms_by_name_test.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
@@rooms.sql
@@remove_rooms_by_name.sql
@@test_remove_rooms_by_name.pkg

set serveroutput on size unlimited format truncated

exec ut.run(user||'.test_betwnstr',ut_documentation_reporter());

drop package test_remove_rooms_by_name;
drop procedure remove_rooms_by_name;
drop table room_contents;
drop table rooms;

96 changes: 96 additions & 0 deletions examples/remove_rooms_by_name/test_remove_rooms_by_name.pkg
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
create or replace package test_remove_rooms_by_name as

-- %suite(Remove rooms by name)

-- %suitesetup
procedure setup_rooms;

-- %test(Removes a room without content in it)
procedure remove_empty_room;

-- %test(Does not remove room when it has content)
procedure room_with_content;

-- %test(Raises exception when null room name given)
procedure null_room_name;

end;
/

create or replace package body test_remove_rooms_by_name as

procedure setup_rooms is
begin
insert all
into rooms values(1, 'Dining Room')
into rooms values(2, 'Living Room')
into rooms values(3, 'Office')
into rooms values(4, 'Bathroom')
into rooms values(5, 'Bedroom')
select 1 from dual;

insert all
into room_contents values(1, 1, 'Table')
into room_contents values(2, 1, 'Hutch')
into room_contents values(3, 1, 'Chair')
into room_contents values(4, 2, 'Sofa')
into room_contents values(5, 2, 'Lamp')
into room_contents values(6, 3, 'Desk')
into room_contents values(7, 3, 'Chair')
into room_contents values(8, 3, 'Computer')
into room_contents values(9, 3, 'Whiteboard')
select 1 from dual;
end;

procedure remove_empty_room is
l_rooms_not_named_b sys_refcursor;
l_remaining_rooms sys_refcursor;
begin
open l_rooms_not_named_b for select * from rooms where name not like 'B%';

remove_rooms_by_name('B%');

open l_remaining_rooms for select * from rooms;
ut.expect( l_remaining_rooms ).to_(equal(l_rooms_not_named_b));
end;

procedure room_with_content is
l_rooms sys_refcursor;
l_remaining_rooms sys_refcursor;
begin
open l_rooms for select * from rooms;

begin
remove_rooms_by_name('Living Room');
ut.expect( sqlcode ).to_( equal(-2292) );
exception
when others then
ut.expect( sqlcode ).to_( equal(-2292) );
end;

open l_remaining_rooms for select * from rooms;

ut.expect( l_remaining_rooms ).to_( equal( l_rooms ) );
end;

procedure null_room_name is
l_rooms sys_refcursor;
l_remaining_rooms sys_refcursor;
begin
open l_rooms for select * from rooms;

begin
remove_rooms_by_name(NULL);
ut.expect( sqlcode ).to_( equal(-6501) );
exception
when others then
ut.expect( sqlcode ).to_( equal(-6501) );
end;

open l_remaining_rooms for select * from rooms;

ut.expect( l_remaining_rooms ).to_( equal( l_rooms ) );
end;

end;
/