Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

pl/sql exclusive OR

Posted on 2007-11-15
5
Medium Priority
?
6,078 Views
Last Modified: 2013-12-07
How do you code an exclusive OR in PL SQL.
ie: one or other but not both. Is there an operator to do this?
ie: if both are true then return false
0
Comment
Question by:claghorn
5 Comments
 
LVL 1

Expert Comment

by:bobbymanocha
ID: 20289580
Here's one way:

create or replace function f_xor(
  condition1 boolean,
  condition2 boolean) return boolean
as
begin
  return (condition1 and condition2);
end;
/
0
 
LVL 1

Expert Comment

by:bobbymanocha
ID: 20289649
I posted the wrong code earlier.  Sorry about that.

create or replace function f
(condition1 boolean, condition2 boolean) return boolean as  
begin
return XOR(condition1, condition2);
end;
/
0
 
LVL 27

Accepted Solution

by:
kretzschmar earned 150 total points
ID: 20296637
another sample


DECLARE
  a BOOLEAN;
  b BOOLEAN;
 
  
  FUNCTION exclusive_or(c1 IN BOOLEAN, c2 IN BOOLEAN)
  RETURN BOOLEAN
  IS 
  BEGIN
    RETURN ((c1 OR c2) AND NOT (c1 AND c2));
  END;
  
  
BEGIN
  
  a := TRUE;
  b := TRUE;
    
  IF exclusive_or(a,b) THEN
    DBMS_OUTPUT.PUT_LINE('Both TRUE results in TRUE');
  ELSE
    DBMS_OUTPUT.PUT_LINE('Both TRUE results in FALSE');
  END IF;
  
  a := FALSE;
  b := TRUE;
    
  IF exclusive_or(a,b) THEN
    DBMS_OUTPUT.PUT_LINE('First FALSE, second TRUE results in TRUE');
  ELSE
    DBMS_OUTPUT.PUT_LINE('First FALSE, second TRUE results in FALSE');
  END IF;
 
  a := TRUE;
  b := FALSE;
    
  IF exclusive_or(a,b) THEN
    DBMS_OUTPUT.PUT_LINE('First TRUE, second FALSE results in TRUE');
  ELSE
    DBMS_OUTPUT.PUT_LINE('First TRUE, second FALSE results in FALSE');
  END IF;
 
  a := FALSE;
  b := FALSE;
    
  IF exclusive_or(a,b) THEN
    DBMS_OUTPUT.PUT_LINE('Both FALSE results in TRUE');
  ELSE
    DBMS_OUTPUT.PUT_LINE('Both FALSE results in FALSE');
  END IF;
 
END;  
  

Open in new window

0
 
LVL 28

Expert Comment

by:Naveen Kumar
ID: 20297887
( c1 and not c2 ) or ( c2 and not c1 )  --> i think this should be fine as well.

Thanks
0
 

Author Comment

by:claghorn
ID: 20298518
OK, thank you all, I will assess which one works for me tonight and release the points.
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I remember the day when someone asked me to create a user for an application developement. The user should be able to create views and materialized views and, so, I used the following syntax: (CODE) This way, I guessed, I would ensure that use…
Checking the Alert Log in AWS RDS Oracle can be a pain through their user interface.  I made a script to download the Alert Log, look for errors, and email me the trace files.  In this article I'll describe what I did and share my script.
This video explains at a high level with the mandatory Oracle Memory processes are as well as touching on some of the more common optional ones.
This video shows, step by step, how to configure Oracle Heterogeneous Services via the Generic Gateway Agent in order to make a connection from an Oracle session and access a remote SQL Server database table.
Suggested Courses

810 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question