I am using a temporary table in a stored procedure with LINQ to SQL. I add the stored procedure to the Linq to SQL dbml file, then a project error message appears
"Unknown return type - return data types for the following stored procedures could not be detected."
When I delete the temporary table in the stored procedure, then the return value will be fine.
How to use a temporary table in a stored procedure with Linq to SQL
I will replace the seductive, like this
CREATE TABLE tempTable( PartsReceivingID INT, SoPartID INT, RecvQty INT, ReturnQty INT )
Replace as below
SELECT @RowCount = count(*) FROM Parts.studentTempTable IF @RowCount > 0 BEGIN TRUNCATE TABLE Parts.studentTempTable; END
Working version of the stored procedure
ALTER PROCEDURE [dbo].[stp_student_Select_New] @pSchID as int, @pCompanyID as int, @pAgingDate as int, @pTicketNo as VARCHAR(50), @pInvoiceNo as VARCHAR(50), @pDeliveryNo as VARCHAR(50), @pPartNo as VARCHAR(50) As SET NOCOUNT ON BEGIN SELECT @RowCount = count(*) FROM Parts.studentTempTable IF @RowCount > 0 BEGIN TRUNCATE TABLE Parts.studentTempTable; END =============================================== do something with studentTempTable =============================================== SELECT r.Ticketid AS TicketID, r.SoPartNo AS PartNo , p.Description, r.InvoiceNo as InvoiceNo, r.InvoiceDate AS InvoiceDate, DATEDIFF(DY,r.InvoiceDate,GETDATE())as Aging, r.Qty AS CurrentInventory, t.ReturnQty AS ReturnQty FROM Parts.studentTempTable AS t, Parts.PartsReceiving AS r, Parts.PartsInfo as p WHERE t.PartsReceivingID = r.PartsReceivingID
No working version of the stored procedure
ALTER PROCEDURE [dbo].[stp_student_Select] @pVendorID as int, @pCompanyID as int, @pAgingDate as int, @pTicketNo as VARCHAR(50), @pInvoiceNo as VARCHAR(50), @pDeliveryNo as VARCHAR(50), @pPartNo as VARCHAR(50) As SET NOCOUNT ON BEGIN BEGIN TRY CREATE TABLE tempTable( PartsReceivingID INT, SoPartID INT, RecvQty INT, ReturnQty INT ) =============================================== do something with tempTable =============================================== SELECT isnull(r.Ticketid,0) AS TicketID, --i.TicketNo, r.SoPartNo AS PartNo , p.Description, r.InvoiceNo as InvoiceNo, --r.DeliveryNo, r.InvoiceDate AS InvoiceDate, DATEDIFF(DY,r.InvoiceDate,GETDATE())as Aging, r.Qty AS CurrentInventory, t.ReturnQty AS ReturnQty FROM tempTable AS t, Parts.PartsReceiving AS r, --Ticket.TicketInfo as i, Parts.PartsInfo as p WHERE t.PartsReceivingID = r.PartsReceivingID --and i.TicketID = r.TicketID and p.PartID = r.SoPartID and t.ReturnQty >0 and DATEDIFF(DY,r.InvoiceDate,GETDATE()) > @pAgingDate and r.VendorID = @pVendorID and r.CompanyID = @pCompanyID and r.SoPartNo like '%%' + @pTicketNo + '%' and r.InvoiceNo like '%%' + @pInvoiceNo + '%' and r.SoPartNo like '%%' + @pPartNo + '%' --and i.TicketNo like '%%' + @pTicketNo + '%' --and r.DeliverNo like '%%' + @pDeliveryNo + '%' DROP TABLE temptable END TRY BEGIN CATCH SELECT ERROR_MESSAGE() as ErrorMessge, ERROR_NUMBER() AS ErrorNumber END CATCH Return END