There are sql statments that oracle (sqlplus) will execute but thei are not normal sql. exec i suppose is one of those.
to execute a stored proc you go like this
$sql = "BEGIN FETCHP_TXVP($id); END;";
stat=OCIParse($con,$sql) or die("couldn't parse");
OCIExecute($stat) or die("couldn't execute");
assuming FETCHP_TXVP is the name of the stored procedure you're trying to execute. but i don't see how would that help you since you are supposed to get a result back, and I don't see it in the code. If this is a function returning some value try this
$sql = "BEGIN :ret = FETCHP_TXVP($id); END;";
stat=OCIParse($con,$sql) or die("couldn't parse");
ocibindbyname($stat,"ret",&$ret);
// if result is a varchar give length
// ocibindbyname($stat,"ret",&$ret,200);
OCIExecute($stat) or die("couldn't execute");
this would work on all normal types but not on lobs, cursors.
hope this helps