I haven't used TVP or stored procedures before and I'm hoping I can get some clarification on how to retrieve the equivalent of the first query as a dataset in c#. I created a custom type and procedure that seem to work and whenever I declare a variable and exec the stored procedure in SSMS it works, I'm just not sure how to replicate that in code.
SELECT ServLoc.ID, Meters.MeterID, MeterHistory.Stuff
FROM ServLoc
INNER JOIN Meters ON ServLoc.ID = Meters.ServLocID
INNER JOIN MeterHistory ON Meters.MeterID = MeterHistory.MeterID
WHERE ServLoc.ID IN (1,2,3...40,000)
CREATE TYPE dbo.ServLocMeters
AS TABLE (ServLocID int NOT NULL)
CREATE PROCEDURE [dbo].[sp_ServLocMeters]
@newServLocMeters ServLocMeters READONLY
AS
SELECT ServLocID, Meters.MeterID, MeterHistory.Stuff
FROM Meters
INNER JOIN MeterHistory ON Meters.MeterID = MeterHistory.MeterID
WHERE ServLocID IN (SELECT ServLocID FROM @newServLocMeters)
ORDER BY ServLocID
declare @table as ServlocMeters
insert into @table values (1)
insert into @table values (2)
insert into @table values (31)
exec sp_servlocmeters @table