我正在尝试改进当前系统的错误处理,以产生更有意义的错误消息。我有一个“根”存储过程,该存储过程对其他嵌套存储过程进行了多次调用。
在根sp中,XACT_ABORT将其设置为,ON但在嵌套过程中,XACT_ABORT将其设置为OFF。我想从较低级别的过程中捕获特定的错误,而不是获取根过程的错误。
我经常看到错误, uncommittable transaction is detected at the end of the batch, the transaction is being rolled back.
将这些“混合”环境与XACT_ABORTs?
另外,如果您对高级错误处理有任何建议,将不胜感激。我想我想使用它,sp_executesql这样我就可以传递参数来获取错误输出,而不必修改所有存储过程并用于RAISERROR调用父过程的CATCH块。
我有两个表,Users和#TempTable(用户的子集).我想更新Users表中的列IsActive.如果#TempTable中的用户也在Users表中,我想设置IsActive = 1,否则设置IsActive = 0.
从不在#TempTable中的用户获取用户(对于这些用户,IsActive应设置为0):
-- (Users \ #TempTable) U (#TempTable \ Users)
SELECT u.UserName
FROM Users u
WHERE (u.UserName) NOT IN
(SELECT t.[User Name] FROM #TempTable t)
UNION ALL
SELECT t.[User Name]
FROM #TempTable t
WHERE (t.[User Name]) NOT IN
(SELECT u.UserName FROM Users u)
Run Code Online (Sandbox Code Playgroud)
我们称之为ResultSet.我很感激UPDATE声明的一些帮助.我希望能做的是:
UPDATE Users
SET IsActive = (CASE WHEN User.UserName IN ResultSet THEN 0 ELSE 1 END)
Run Code Online (Sandbox Code Playgroud)
无需为每个User.UserName写出CASE WHEN.提前致谢!
我想实现下图中“所需输出”列中的内容。我需要获取第 1 行中的内容(id1、id2 等),添加“:”,然后将其与每个字段列下的值连接起来,添加“|” 到每个 ID-Value 对,并将它们全部放入一个单元格中。我需要该公式也适用于空单元格,因为要连接在一起的字段数量是动态的。
到目前为止,我已经在一个单元格中尝试了一个大的 CONCATENATE 公式,但我只能让它适用于公式中包含的尽可能多的非空白单元格。
提前致谢!