0

我认为我忽略了一些微不足道的问题,我正在调用存储过程,我知道调用是在分析器中看到的,当我从查询分析器运行存储过程时,它确实返回记录如预期。问题是当我从 C# 代码调用它时,正在执行但没有检索到结果。

我的调试表明,如果我有一个代码,例如如果 OBJECT_ID ('tempdb..##base') IS NOT NULL drop table ##base 在存储过程中,它不会使用 OdbcDataReader 返回任何数据,否则它会返回数据,有人能告诉我这是为什么吗?

谢谢

4

1 回答 1

0

请记住,返回给 .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 语句,我会得到数据,否则没有

如何检查和删除临时表

http://blog.sqlauthority.com/2009/05/17/sql-server-how-to-drop-temp-table-check-existence-of-temp-table/

于 2012-06-12T21:54:46.470 回答