I'm not sure about the question, since I do not really understand why it fails.
I tend to use commands to generate my tables, and when I use the #1 style of accessing the arguments it works. But now I have a wider dataset, and need to use this trick: How to define a command that takes more than 9 arguments to get all the arguments together in one command.
Minimal example:
\documentclass[]{article}
\begin{document}
\newcommand\rowdata[2]{%
\def\firstPoint{#1}%
\def\secondPoint{#2}%
\createRow
% #1 & #2 \\ would work.
}
\newcommand\createRow{ %
\wlog{\firstPoint \secondPoint} % it appears in the log
\firstPoint & \secondPoint \\ % this fails
}
\begin{table}
\begin{tabular}{l l}
\rowdata{a}{b}
\rowdata{d}{b}
\rowdata{a}{c}
\end{tabular}
\end{table}
\end{document}
And this gives the following error:
! Undefined control sequence.
\createRow ...dPoint } \firstPoint & \secondPoint
\\
l.16 \rowdata{a}{b}
If I remove the & it does work, but then I cannot create a table anymore.
So what is happening here?

\secondPointis forgotten as soon as&is digested. – egreg Feb 21 '13 at 15:50