以下代码甚至不引发异常,参数@ p1,@ p2和@ p3没有得到运行时值:ExecuteNonQuery
返回零
答案 0 :(得分:1)
如果您有权访问开发服务器,请运行探查器以查看实际传递给SQL Server引擎的内容。
另外,在VB.NET代码中添加一些调试行。我确信有些事情已经结束。
PS:以文本格式向我们展示最终查询。所有字符串附加都使得阅读更加困惑。
可以删除这些陈述。
DECLARE @cur_date_time datetime;
SELECT @cur_date_time = getdate();
只需将第一行更改为第二版。
AND d.DateModified >= @cur_date_time
AND d.DateModified >= getdate()
我会使用较新的连接语法。请注意,在进行内联getdate()更改后,我注意到您在交叉连接关系中有表a,b和c。 IE - 他们没有加入密钥。这是你真正想要的。
INSERT INTO
aic_global_change_xref(ChangeTableGUID, ChangeRecordGUID, GlobalChangeGUID)
SELECT
a.GUID as ChangeTableGUID,
d.GUID as ChangeRecordGUID,
b.GUID as GlobalChangeGUID
FROM
aic_change_table a
aic_global_change b
aic_rationale c
LEFT JOIN
aic_obs_set_obs_set_obs_item_xref_chg d on c.GUID = d.RationaleGUID
LEFT JOIN
aic_obs_set e ON d.ParentObsSetGUID = e.GUID
LEFT JOIN
dbo.aic_obs_set f ON d.ChildObsSetGUID = f.GUID
WHERE
f.GUID = @p1 and
d.ParentObsSetGUID = @p2 and
c.RationaleText = @p3 and
d.DateModified >= getdate() and
a.ChangeTableName = 'aic_obs_set_obs_set_obs_item_xref_chg' and
b.GlobalChangeCode = 'EDITS';
我会接受我给你的代码,把它放到SSMS中并定义@ p1,@ p2和@p3。看看你得到的结果是什么。
我将所有内容更改为左连接,以便数据不会被丢弃。由于我不了解您的业务逻辑并且没有您的数据集,因此剩下的工作由您决定。
祝你好运!