Как исправить «Подзапрос возвращает несколько значений»? - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь написать хранимую процедуру, которая должна проверить, существует ли имя Dont в моей базе данных, и если имя не существует, я создаю новую строку с именем и передачей.

У меня есть эта ошибка:Подзапрос возвращает несколько значений.

    this is my code :

    if((select Nom from prorio where Nom = @p_nom) = '')

    insert into Prorio (Nom, mdp) VALUES (@p_nom, @p_mdp);
    else if((select Nom from prorio where Nom = @p_nom)!='')
    return 2;

1 Ответ

2 голосов
/ 21 октября 2019

Кажется, что логика, которую вы ищете:

IF (@p_nom = '' AND EXISTS(SELECT 1 FROM Prorio WHERE Nom = '')) BEGIN

    INSERT INTO dbo.Prorio (Nom,mdp)
    VALUES(@p_nom,@p_mdp);

END
ELSE IF @p_nom != '' BEGIN 

    SET @OutputParam = 2;
END;

Вам нужно будет добавить @OutputParam к определению вашего SP (как параметр OUTPUT) и, вероятно, дать ему "лучше"name.

Это похоже на проблему XY. Логика, которую вы используете, означает, что, если у человека есть пустое ('') имя, он может быть вставлен только , если другие строки в таблице уже имеют пустое ('')) имя. Это кажется недостатком дизайна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...