Hola!
Yo uso el "@" en los sp... aqui un ejm cuando quiero q el sp me devuelva el sgt numero correlativo de una tabla (guias de remision del almacen)
/*****************************************************/
CREATE PROCEDURE sp_Inv_Dame_Numero_Documento_New
@cCodEmp   varchar(2),
@cAnno                   varchar(4),
@cMes      varchar(2),
@cTipDoc                   varchar(2),
@cNumDoc   varchar(12) OUTPUT,
@cNumDocSgt   varchar(12) OUTPUT
AS
DECLARE @cMaxDocum varchar(12)
DECLARE @nMaxDocum int
DECLARE @nLen int
/* Obtengo el Numero Maximo del Tipo de Documento */
SELECT @cMaxDocum = ISNULL(MAX(CONVERT DECIMAL,In06CodDoc,0)), "000000000000")
FROM  In06Docu 
WHERE In06CodEmp = @cCodEmp
AND In06AA = @cAnno
AND In06MM  >= '06'
AND In06TipDoc = @cTipDoc
--AND Substring(In06Coddoc,1,1)='0'
SELECT @cNumDoc = @cMaxDocum
/* Genero el Nro Correlativo */
IF @cMaxDocum = "000000000000"
BEGIN
                SELECT @nMaxDocum = CONVERT(int, @cMaxDocum)
   SELECT @nMaxDocum = @nMaxDocum + 1
   SELECT @cMaxDocum = CONVERT(varchar(12), @nMaxDocum)
   SELECT @nLen = DATALENGTH(RTRIM(@cMaxDocum))
   SELECT @cNumDocSgt = REPLICATE("0", 5 - @nLen) + RTRIM(@cMaxDocum)  
END
/* Ejecuto el Procedure */
GO
/*****************************************************/
Espero te ayude de algo...  
 Cuando colocas OUTPUT es por q son variables q toman datos para mostrartelos como resultado....
Q tengan un buen año!