Prathap Gangireddy Ответов: 3

Генерация уникальных серийных номеров для партий в фармацевтической промышленности - SQL SERVER 2008


В переднем конце, когда клиент вводит количество 100/200 конкретного лекарства, нужно сгенерировать уникальные серийные номера для партий, которые имеют валидации того, что включать/исключать, и сохранить 100/200 строк со всеми деталями партий вместе с уникальным серийным номером.

Например: если я заказываю определенное количество 100 и нажмите на кнопку "Сгенерировать серийные номера", и проверка будет похожа на необходимость включения 'ABCDEFGHIJKL2589' (просто пример может варьироваться, что включать).

Переменными здесь являются Количество и Цифробуквенный быть включенным для генерации серийных номеров. (которые являются динамическими)

Максимальная длина серийного номера-20.

Еще несколько примеров
В интерфейсе есть форма для выбора алфавитов и цифр, которые будут включены в генерацию серийных номеров.Он может быть либо прописным, либо строчным, но не может быть и тем, и другим, а также числами от 0 до 9. Никаких специальных символов.

Если мне нужно 10 кол-во( партий), то с помощью выбранных букв и цифр я сгенерирую 10 различных серийных номеров(в этом примере я мог бы выбрать "A,B,C,D,1,2,3" в переднем конце).
A,AB,AC,AD,AD1,AB23 etc

Если мне нужно, если мне нужно 20 кол-во( партий), то с помощью выбранных букв и цифр я Сгенерирую 20 различных серийных номеров.(в этом примере я мог бы выбрать "G,H,A,B,5,0,3" в переднем конце).
GHA,BA5,GHAB503 etc


Что я уже пробовал:

пробуя несколько решений с помощью
newid() 
но я не понимаю, как сгенерировать уникальный серийный номер с использованием выбранных буквенно-цифровых символов и который должен быть уникальным во всех партиях, идущих вперед.

3 Ответов

Рейтинг:
2

Maciej Los

Если вы хотите сгенерировать количество уникальных серийных номеров, то лучший способ добиться этого-использовать функция NEWID[^] и КТОС[^]. Видеть:

DECLARE @RowsCount INT = 100

;WITH CTE AS
(
	--initial part
	SELECT 1 AS RowNo, NEWID() AS CustomSeq
	--recursive part
	UNION ALL
	SELECT RowNo +1 AS RowNo, NEWID() AS CustomSeq
	FROM CTE
	WHERE RowNo<@RowsCount 
)
SELECT RowNo, CustomSeq
FROM CTE
OPTION (MAXRECURSION 0)


Для получения более подробной информации, пожалуйста, смотрите:
MAXRECURSION Sql Server | SqlHints.com[^]
Обобщенные табличные выражения (введение в КТР-х) - необходимые для SQL[^]
Освоение общего табличного выражения или CTE в SQL Server[^]


Prathap Gangireddy

Здесь мы посылаем комбинацию букв и цифр (буквенно-цифровой) параметр в базу данных, из которой нам нужно сгенерировать уникальный серийный номер. Как ABCDEFGHIJKL2589 " или "АБВГД" или "124568' 'АБВ123'. Любая такая комбинация в качестве параметра будет отправлена и использована для генерации серийного номера.

Рейтинг:
0

Prathap Gangireddy

m использует Sql server 2008, и я думаю, что последовательность недоступна в этой версии.

Prathap Gangireddy

m использование sql server 2008,последовательности

Рейтинг:
0

MadMyche

Публикация в этой теме Вместо репоста, где я начал это делать, прежде чем узнал, что это был репост

Я бы настоятельно посоветовал вам посмотреть на какой-нибудь тип умный серийный номер; похож на автомобильный VIN (Идентификационный Номер Транспортного Средства), или посмотрите на то, что в настоящее время используется другими участниками отрасли.

Способ, который я бы реализовал, содержал бы (но не ограничивался) DrugID (тип, сила), номер партии, а затем последовательный подсчет.
Эти отдельные элементы будут храниться в разных таблицах внутри вашей системы, и окончательный серийный номер будет представлять собой конкатенацию строк элементов.
Единственное, что, возможно, должен был бы сделать "оператор", - это ввести номер партии, и это было бы подчинено его собственной логике, чтобы быть последовательным по своей природе и иметь дату изготовления, закодированную в нем.

Там, кажется, слишком много решений конечного пользователя, как вы его выстроили, которые, кажется, переводятся только в одну систему нумерации. На мой взгляд, его действительно нужно сломать.
Бизнес-правила должны создаваться для каждого элемента отдельно; каждый элемент должен иметь свою собственную прикладную логику для реализации, не связанную с другими элементами.
То окончательный серийный номер должен иметь свое собственное бизнес-правило, которое может следовать правилам, описанным вами для типа и длины символов.