Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: PL/SQL: Procedure with variable number of parameters ?
On Wed, 26 Mar 97 10:28:58 GMT, fmaesen_at_luc.ac.be (Frank Maesen) wrote:
>Can anybody explain how to create a procedure in PL/SQL which can accept
>a variable number of parameters.
That depends on what you need to do. It's certainly feasible to have a
procedure that accepts a parameter of type varchar2 that is a
delimited string. If your parameters were always passed in the same
order and NULL values included in the string, you could always do
something like this:
PROCEDURE Delimited_Parameters (vParameterList IN varchar2)
IS
iDelimiterPos integer := 0; vParameter1 varchar2 (20); vParameter2 varchar2 (20); vParameter3 varchar2 (20);
vParameterN varchar2 (20); vParameters varchar2 (2000); vDELIMITER CONSTANT char (1) := '^'; PROCEDURE NextWord (vStringToParse IN OUT varchar2, vReturnWord OUT varchar2)
IS
iDelimiterPos integer := 0;
BEGIN
iDelimiterPos := instr (vStringToParse, vDELIMTER); vReturnWord := substr (vStringToParse, 1, iDelimiterPos); vStringToParse := substr (vStringToParse, (iDelimiterPos + 1));END NextWord;
BEGIN
NextWord (vStringToParse => vParameters,
vReturnWord => vParameter1); .
NextWord (vStringToParse => vParameters,
vReturnWord => vParameterN);END Delimited_Parameters;
However, you still have to explicityl declare a maximum number of parameters for the procedure and each parameter would have to be extracted from the string individually. PL/SQL doesn't allow you to create variables that haven't been defined, so there's no way around this.
If this isn't what you're trying to do, you might take a look at overloading. This requires you to write multiple pieces of code using the same name, but the modules all have different numbers and/or types of parameters.
Jonathan Ingram
Meridian Technology Group
503.639.0816
Received on Fri Mar 28 1997 - 00:00:00 CST