设置:SQL结果不返回C#
- asp.net MVC
- SQL Server 2008 R2的
我有一个过程,以获得消息列表发送。我想更新结果记录,所以我不会无意中将相同的记录重复两次。无论我如何接近它,SSMS
都会生成正确的消息列表。但是,如果我使用相同的过程更新记录,则C#不会得到任何结果。
我已经使用DataAdapter
这样的尝试:
var da = new SqlDataAdapter(cmd);
da.Fill(table);
和DataReader
这样的:
var dataReader = cmd.ExecuteReader();
table.Load(dataReader);
dataReader.Close();
来填充我的DataTable
,似乎都不影响使用效果。
我的过程是这样的:
ALTER PROCEDURE [dbo].[MnxNoticeGetMessages]
@sessionId uniqueidentifier = null
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Output TABLE (messageid uniqueidentifier)
INSERT INTO @Output
SELECT messageid FROM MnxTriggerEmails WHERE dateSent is null
SELECT * FROM MnxTriggerEmails WHERE messageid IN (SELECT messageid FROM @Output)
UPDATE MnxTriggerEmails SET dateSent=GETDATE()
WHERE messageid IN (SELECT * FROM @Output)
END
这产生SSMS
的结果,但不是在C#
。
如果我注释掉UPDATE
像这样(没有其他变化):
--UPDATE MnxTriggerEmails SET dateSent=GETDATE()
-- WHERE messageid IN (SELECT * FROM @Output)
我得到两个SSMS
和C#
预期的结果。
我错过了什么?什么会造成这种情况?我如何更新记录并同时获得结果?
您是否尝试过使用'dataReader'的'Read()'方法来调试您的代码? – Xint0
不,您是否认为select方法会影响DataReader的使用方式并加载信息?我没有得到错误,我只是没有在数据表中得到结果。 – davids
您是否尝试过在更新后移动选择? –