Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Passing in NULL via SQL ACCEPT

Re: Passing in NULL via SQL ACCEPT

From: Arn Klammer <Arn.Klammer_at_austrac.gov.au>
Date: Thu, 14 Mar 2002 16:53:18 -0800
Message-ID: <F001.0042A43C.20020314165318@fatcity.com>


This is because SQLPlus does the substitution before executing the block, and thus the entered value is inserted into the code as a literal, not as a bind variable.

eg,

accept x prompt 'Enter x:'

begin
  if &&x = 2 then
    do_something;
  end if;
end;

If the user enters 100, then the block becomes:

begin
  if 100 = 2 then
    do_something;
  end if;
end;

However, if the user doesn't enter anything, x is replaced with nothing, leaving the block as:

begin
  if = 2 then
    do_something;
  end if;
end;

which produces an execution error.

One way around this is to ensure there's always a correct argument in that position, eg:

begin
  if '&&x' = '2' then
    do_something;
  end if;
end;

For null entry, this would give:

begin
  if '' = '2' then
    do_something;
  end if;
end;

which works.

HTH -a

>>> Bill.Magaliff_at_lendware.com 14/3/2002 1:43:24 >>>
This message has been scanned by MAILSweeper.


I'm writing an anonymous PL/SQL block that accepts various input from SQL*Plus via ACCEPT commands. I then take the SQL input and use it in the block, usually by assigning it to a PL/SQL variable.

If no value is specified on the ACCEPT line, it appears that nothing is passed into PL/SQL, not even NULL. I tried using NVL(&&variable,0) to reassign the supposed NULL to a 0, but the program returns an error that nothing exists in place of &&variable.

Any ideas how to catch this null, which I want to be a viable option (e.g., if the &&varible is NULL then perform certain operations).

Thanks much

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com 
-- 
Author: Magaliff, Bill
  INET: Bill.Magaliff_at_lendware.com 

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).




**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: Arn Klammer
  INET: Arn.Klammer_at_austrac.gov.au

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).
Received on Thu Mar 14 2002 - 18:53:18 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US