我认为我忽略了一些微不足道的问题,我正在调用存储过程,我知道调用是在分析器中看到的,当我从查询分析器运行存储过程时,它确实返回记录如预期。问题是当我从 C# 代码调用它时,正在执行但没有检索到结果。
我的调试表明,如果我有一个代码,例如如果 OBJECT_ID ('tempdb..##base') IS NOT NULL drop table ##base 在存储过程中,它不会使用 OdbcDataReader 返回任何数据,否则它会返回数据,有人能告诉我这是为什么吗?
谢谢
请记住,返回给 .NET 的结果是在过程中发出 SELECT 的 LAST 语句的结果。如果 OBJECT_ID 查询是在您想要返回数据的 SELECT 语句之后,那么您可能不会得到结果。
但是,我需要查看您的存储过程才能确定地告诉您。
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER PROCEDURE dbo.proc_myStoredProc
AS
if OBJECT_ID ('tempdb..##base') IS NOT NULL drop table ##base
SELECT * FROM mytable
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
如果我删除上面的 drop table 语句,我会得到数据,否则没有
如何检查和删除临时表