Creo que está tratando de fusionar un Array Bind {simplemente vinculando una matriz a un parámetro para que se ejecute varias veces; así es como lo hizo el ejemplo en el enlace que proporcionó} con una matriz asociativa {re:PLSQLAssociativeArray con un parámetro de ENTRADA de TABLA DE}.
Dado que no publicó su paquete/proc que está ejecutando, asumo que está haciendo algo como esto (solo dejo esto para validar la suposición)
procedure insertdata(P_JOB_TITLE IN VARCHAR2) as
begin
insert into myTable(x) value (P_JOB_TITLE);
end insertdata;
Para ejecutar esto como el autor del artículo, debe usar ArrayBindCount ( echa un vistazo a este enlace, también tiene un ejemplo) .Esto también indica que, si tiene varios parámetros, esperará un ARRAY para cada uno.
Ahora, para que esto se ejecute para todos los P_JOB_TITLE() que pase
//this was missing in your example and MUST be there to tell ODP how many array elements to expect
cmd.ArrayBindCount = 2;
string[] jobTitleArray = {"name1", "name1"};
OracleParameter paramNames= new OracleParameter("P_JOB_TITLE", OracleDbType.Varchar2);
//paramNames.CollectionType = OracleCollectionType.PLSQLAssociativeArray;/*once again, you are passing in an array of values to be executed and not a pl-sql table*/
//paramNames.Size = 2; /* this is unnecessary since it is for a plsql-associative array*/
paramNames.Value = jobTitleArray ;
cmd.Parameters.Add(paramNames);
Para ver un ejemplo de plSQLAssociativeArray, eche un vistazo a los ejemplos provistos cuando instaló ODP @ %ORA_HOME%\odp.net\samples\2.x\AssocArray
y para ejemplos de enlace de matriz (a partir del enlace que proporcionó) @ %ORA_HOME%\odp.net\samples\2.x\ArrayBind