EXECUTE syntax (https://msdn.microsoft.com/en-us/library/ms188332.aspx) states
@parameter
Is the parameter for module_name, as defined in the module.
Key phrase being "in the module", where "module" refers to an object in sys.all_sql_modules. In contrast to harnessing SQL Server modules, you are instead passing a string to a linked server (with the expectation that the string will be parsed and executed at the linked server). The parameter arguments passed to EXECUTE refer to a SQL Server module that was not supplied, thus both arguments are unused.
You should instead concatenate @itemcode within your string, and EXECUTE the resulting string. To deal with the output (as opposed to OUTPUT, which is moot per prior paragraph), you can instead DECLARE @Stock TABLE (Stock numeric);
INSERT @Stock EXEC (@ConcatenatedString) AT OracleLinkedServer;
Use OPENQUERY for sanity checks, and when useful.