The problem that you're having is that SSRS doesn't actually support SP output parameters. You have to wrap your stored procedure with another stored procedure that puts the output parameter value into a rowset. Here's a simple example. If you want, you can just copy & paste into a query in SQL Server Management Studio and it will work:
/*** Begin Example ***/
-- Setup
CREATE TABLE customers
(
customerid INT IDENTITY,
firstname VARCHAR(50),
lastname VARCHAR(50),
custstatus VARCHAR(50)
)
GO
INSERT customers
VALUES ('John',
'Smith',
'Active')
GO
-- First Stored Procedure, which uses output parameters.
-- This cannot be used directly in SSRS
CREATE PROCEDURE dbo.Usp_proc1 @CustID INT = 0,
@p1 VARCHAR(50) OUTPUT,
@p2 VARCHAR(50) OUTPUT,
@p3 VARCHAR(50) OUTPUT
AS
SELECT @p1 = firstname,
@p2 = lastname,
@p3 = custstatus
FROM customers
WHERE customerid = @CustID
GO
-- Second Stored Procedure, which wraps the first one, converting
-- the output parameters into fields in a single-row rowset.
CREATE PROCEDURE dbo.Usp_proc2 @CustomerID INT = 0
AS
BEGIN
DECLARE @p1_output VARCHAR(50),
@p2_output VARCHAR(50),
@p3_output VARCHAR(50)
EXECUTE dbo.Usp_proc1
@CustomerID,
@p1_output OUTPUT,
@p2_output OUTPUT,
@p3_output OUTPUT
SELECT @p1_output AS cfname,
@p2_output AS clname,
@p3_output AS cstatus
END
GO
-- Example invocation of the wrapper
EXECUTE dbo.Usp_proc2 1
GO
-- Returns a rowset like this:
-- cFNAME cLNAME cSTATUS
------------------------- ----------------- ----------------------
-- John Smith Active
-- Cleanup
DROP PROCEDURE dbo.usp_proc2
DROP PROCEDURE dbo.usp_proc1
DROP TABLE dbo.customers
/*** End Example ***/
Once you've made your wrapper, you can execute it in SSRS as a separate dataset, and use the fields directly. Depending on where you use it, it may be necessary to use it with, e.g. the "First" function, which is an aggregate function that simply means to use the first (in this case only) row returned from the stored procedure call.