объявление переменной - PullRequest
       1

объявление переменной

0 голосов
/ 07 сентября 2011

У меня есть таблица с 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 = + сейчас, проблема здесь в том, что он должен показывать только фактическую ошибку, а не (все объявленные ошибки)

Спасибо

1 Ответ

0 голосов
/ 07 сентября 2011

Некоторые дикие догадки здесь, пока мы ждем более подробной информации

-- 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...