You simply need to define one more parameter, a parameter responsible for return value. Here is an example:
OracleParameter retVal = new OracleParameter("retVal", OracleDbType.RefCursor);
retVal.Direction = ParameterDirection.ReturnValue;
Note #1: The retVal
parameter should be added first in the parameter list, otherwise you might receive ORA-00306: wrong number or type of arguments..
error.
cmd.Parameters.Add(retVal); -- ReturnValue parameter is being added first
cmd.Parameters.Add(tabName); -- then goes everything else
Note #2: It would be better to use ODP for .NET instead of obsolete and deprecated Microsoft Oracle client (System.Data.OracleClient
)
Note #3: Use varchar2
data type instead of varchar
in your PL/SQL code. As of now they are synonyms but their behavior might change in the future.