我有一个包含2列ID(标识),errormessage(10种可能的错误消息)
的表现在我有一些业务逻辑,我可以从中获取可能的错误消息(如果有的话)。 我有10个SP。我想要column2 =错误消息中的所有错误消息。
根据我使用的逻辑,它只更新最后更新的错误(不是全部)
让我们说业务逻辑1(通过执行sp1)ID = 1我得到errorMsg = <Data Invalid>
对于ID = 1,执行SP2,我得到<Data Corrupted>
现在,我想在一列中获取这两条消息。 我知道它很难解释(因为我有10个SP)请帮助我使用我应该使用的方法。
PS:我已经为SP中的每个错误消息声明了一个变量,并在其中添加了下一条消息,但即使该错误没有发生,也显示错误。例如:
declare @errormessage1 varchar(20)
set @errormessage1 = <Data Invalid>
declare @errormessage2 varchar(20)
set @errormessage2 = <Data corrupted>
update my_table
set errormessage= @errormessage1 + @errormessage2
from my_table
即使errormessage1没有无效数据,它仍然显示在col2 = +中 现在,这里的问题是它应该只显示实际错误(所有声明的错误)
谢谢
答案 0 :(得分:0)
在我们等待更多细节时,我们会有一些猜测
-- Create a local table variables to hold processing results
DECLARE @PROCESSING_RESULTS
(
-- size and type these accurately
id int NOT NULL
, error_message varchar(8000)
)
DECLARE @ID int
, @error_message varchar(8000)
-- Load up the table
-- Not sure what the signature of the proc looks like so guessing here
-- Either use an insert into with the execute
-- This assumes an invocation of the proc returns a result set
INSERT INTO
@PROCESSING_RESULTS
EXECUTE dbo.SP1 @id = 1
-- This approach assumes output parameters
EXECUTE dbo.SP1 @id = 1, @error_message output
INSERT INTO
@PROCESSING_RESULTS
([id], error_message)
SELECT 1, @error_message
-- Repeat the above approach for all 10 procs
-- At this point, all the errors are in our processing_results table
-- so we should do something with them.
-- Assuming you want a CSV list of all the error messages, this will
-- mash all the results
SELECT STUFF(
(SELECT ',' + PR.error_message
FROM @PROCESSING_RESULTS PR
ORDER BY PR.error_message
FOR XML PATH('')),1,1,'') AS CSV