Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2022, 16:22   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье Создание хранимой функции для генерации ФИО, email и айпи-адресов

Здравствуйте!
В общем ситуация такая: мене нужно генерировать ФИО-пользователь. На просторах интернета нашел процедуру, которая это делает. Мне нужно превратить эту процедуру в функцию. Помогите, пожалуйста.
Код:
CREATE OR ALTER PROCEDURE [dbo].as_fioGenerator
     @isWoman bit = 0,
     @withF bit = 1,
     @withI bit = 1,
     @withO bit = 1
AS
BEGIN
    DECLARE @res nvarchar(MAX) = ''
 
    DECLARE @fm nvarchar(MAX) = 'Иванов,Петров,Сидоров,Комаров,Смирнов,Сергеев,Никитин,Абрамов,Ильин,Лавров,Зеленин'
    DECLARE @im nvarchar(256) = 'Кирилл,Евгений,Семен'
    DECLARE @om nvarchar(256) = 'Петрович,Анатольевич,Дмитриевич,Иванович,Сергеевич,Павлович,Ильич,Михайлович'
 
    DECLARE @fw nvarchar(MAX) = 'Иванова,Петрова,Сидорова,Комарова,Смирнова,Сергеева,Никитина,Абрамова,Ильина,Лаврова,Зеленина'
    DECLARE @iw nvarchar(256) = 'Ольга,Ирина,Яна,Жанна,Наталья,Марина,Мария,Елизавета,Евгения,Ксения,Оксана'
    DECLARE @ow nvarchar(256) = 'Петровна,Анатольевна,Дмитриевна,Ивановна,Сергеевна,Павловна,Михайловна'
 
 
    DECLARE @f nvarchar(MAX) = iif(@isWoman=1,  @fw,  @fm)
    DECLARE @i nvarchar(MAX) = iif(@isWoman=1,  @iw,  @im)
    DECLARE @o nvarchar(MAX) = iif(@isWoman=1,  @ow,  @om)
 
    IF(@withF=1) BEGIN
        SET @res = @res + iif(@res='', '', ' ') + (SELECT top 1 VALUE FROM dbo.split(@f,',') ORDER BY newid())
    END
    IF(@withI=1) BEGIN
        SET @res = @res + iif(@res='', '', ' ') + (SELECT top 1 VALUE FROM dbo.split(@i,',') ORDER BY newid())
    END
    IF(@withO=1) BEGIN
        SET @res = @res + iif(@res='', '', ' ') + (SELECT top 1 VALUE FROM dbo.split(@o,',') ORDER BY newid())
    END
 
    SELECT @res
END
Использование:
Код:
EXEC [dbo].as_fioGenerator - мужские ФИО
 
EXEC [dbo].as_fioGenerator @isWoman = 1 - женские ФИО
 
EXEC [dbo].as_fioGenerator @isWoman = 1, @withF = 1, @withI = 1, @withO = 0 - женские Фамилия и Имя
 
EXEC [dbo].as_fioGenerator @isWoman = 0, @withF = 0, @withI = 1, @withO = 0 - мужские Имена
Женя32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сделать рассылку по списку email адресов baracuda6020 C# (си шарп) 2 11.08.2015 08:19
Ошибка при вызове хранимой функции MySQL tavrocotaps Общие вопросы .NET 0 23.04.2010 10:25