Tienes que hacerlo sobre el mismo query en dos veces, uno para la llamada al procedimiento y otro para el propio SELECT, intentalo de esta forma, a mi así, si me funciona :
Código Delphi
[-]
ZQuery1.sql.Clear;
zquery1.SQL.Add('CALL ver(:codigo,@precio,@articulo)');
zQuery1.ParamByName('codigo').value := '111';
zQuery1.ExecSQL;
ZQuery1.sql.Clear;
zquery1.SQL.Add('SELECT @precio,@articulo');
zquery1.open;
Por otra parte y haciendo algunas pruebas para intentar hacerlo directo, utilice los parámetros del propio query (1 de entrada y 2 de salida).
Pero me he topado con cierto bug ya documentado de ZEOS, en cuanto al tema de los parámetros, y en particular da el error:
Input parameter count is less then expected y parece venir desde la versión 6.X.
Aqui se habla del tema
http://zeoslib.sourceforge.net/viewtopic.php?t=2979
http://zeoslib.sourceforge.net/viewtopic.php?t=9357
y este sería el código que genera el error:
Código Delphi
[-] zquery1.SQL.Add('CALL ver(:codigo, recio,:articulo)');
ParamByName('codigo').ParamType := ptInput;
zQuery1.ParamByName('codigo').value := '111';
ParamByName('precio').ParamType := ptOutput;
ParamByName('articulo').ParamType := ptOutput;
zQuery1.ExecSQL;
ShowMessage(ParamByName('articulo').AsString);
Aunque parece que ya han sacado algún parche para solucionarlo, en mi caso en particular estoy utilizando la version 7.2.1-rc y en ella aún sigue saliendo dicho error.