Синглтоны решают одну (и только одну) проблему.
Ресурсный конфликт.
Если у вас есть какой-то ресурс, который
( 1 ) может иметь только один экземпляр, и
( 2 ) вам нужно управлять этим единственным экземпляром,
вам нужен синглтон .
Примеров не так много. Файл журнала большой. Вы не хотите просто отказаться от одного файла журнала. Вы хотите очистить, синхронизировать и закрыть его правильно. Это пример единого общего ресурса, которым нужно управлять.
Редко нужен синглтон. Причина, по которой они плохие, заключается в том, что они чувствуют себя глобальными , и они полностью оплачены членом книги GoF Design Patterns .
Когда вы думаете, что вам нужна глобальность, вы, вероятно, совершаете ужасную ошибку в дизайне.
Параметры необходимо передать в sp_executesql. Подробности см. В MSDN .
...
WHERE
CreatedBy = @p
...
EXECUTE sp_executesql @sql, N'@p UNIQUEIDENTIFIER', @p = @p_CreatedBY
DECLARE @ParmDefinition NVARCHAR(500)
SET @ParmDefinition = '@p_CreatedBy UNIQUEIDENTIFIER'
EXEC sp_executesql @sql, @ParmDefinition, @p_CreatedBy = @p_CreatedBy
Я не уверен, заполняется ли ваша переменная в строковом или двоичном формате, но вам может потребоваться указать уникальный идентификатор в предложении where. Если вы просто выберете поле uniqueidentifier, оно вернется в виде строки или двоичного файла?