В моем текущем проекте мы сталкиваемся с проблемами, которые могут быть очень легко отлажены (в нашей среде разработки), зная, что выполняются вызовы, вместе с их соответствующими параметрами. Чтобы добиться этого, я создал таблицу, в которой хранится имя PRO C, а также произвольный BLOB-объект JSON, содержащий все параметры, с которыми он вызывался. Я также храню время звонка, но это не имеет значения.
Ниже приведен единственный способ заполнения этой таблицы:
DECLARE @prmJson NVARCHAR(MAX) = ( SELECT * FROM (VALUES
('@userId' , @userId )
, ('@baiCodeMerchantId' , @baiCodeMerchantId )
, ('@baiCodeMerchantType' , @baiCodeMerchantType )
, ('@appliedAccountId' , @appliedAccountId )
, ('@unappliedAccountId' , @unappliedAccountId )) AS P(Name, Value) FOR JSON AUTO);
INSERT INTO History.SprocCallRecords ([SprocName], [ParametersJson])
VALUES (QUOTENAME(OBJECT_NAME(@@PROCID)), @prmJson);
Моя проблема в том, что это много код для добавления к каждой отдельной процедуре . Я предпочел бы поразмышлять над значениями в области или вызвать какой-нибудь C# -подобный метод nameof (). Хотя я, очевидно, проецирую другие языки на t SQL, я бы очень хотел упростить этот шаблон, прежде чем интегрировать его где-либо.
В основном я ищу предложения, но не так много Мне удалось найти в Google RE: именно это.
Заранее спасибо за любую помощь!