我有一个SQL查询,它创建一个临时表,在其中插入记录,然后根据需要插入新记录或更新现有记录来迭代这些记录。我把它们计算为2个局部变量'@updated'和'@inserted'。我想在我添加的查询结束时返回这些值:
SELECT @updates as UPDATES, @inserted AS INSERTED
当我从QA运行我的查询时,我得到正确的输出,说明更新和插入的记录。但是,当我从C#运行查询时,我正在使用
SqlDataReader myReader = command.ExecuteReader();
if (myReader.Read())
{
updates = myReader.GetInt32(0);
inserts = myReader.GetInt32(1);
}
但我得到一个例外,因为它说数据为空。根据字段计数,返回行中有2个字段,但它们都为空。不确定为什么?
答案 0 :(得分:0)
正如Brett所说 - 将其移植到存储过程中。我相信你以后会很高兴。
MIGHT给你一个问题的另一件事是类型(在c#end上)
因此,我确保您将结果转换为INT。
SELECT CONVERT(INT, @updates) as UPDATES, CONVERT(INT, @inserted) AS INSERTED
答案 1 :(得分:0)
全部感谢 - 你让我走上了正确的轨道让我知道它看起来是正确的。原来是一个菜鸟错误 - 我正在增加@updates和@inserts,但我没有先将它初始化为0,所以查询实际上按预期工作。不知道为什么它在质量保证中起作用,但现在就开始了。