如何修复“子查询返回多个值”?

时间:2019-10-21 11:31:27

标签: sql sql-server

我正试图编写一个存储过程,这些存储过程必须验证数据库中是否不存在名称,如果名称不存在,则使用名称和密码创建新行。

我遇到此错误:子查询返回多个值。

    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 个答案:

答案 0 :(得分:2)

似乎您追求的逻辑是:

"the"

您需要将x = ['Mary had a little lamb', 'Jack went up the hill', 'Jill followed suit', 'i woke up suddenly', 'I just missed the train', 'it was a really bad dream'] res = list(filter(lambda str : str.split()[-2] != "the", x)) print(res) # ['Mary had a little lamb', 'Jill followed suit', 'i woke up suddenly', 'it was a really bad dream'] 添加到SP的定义中(作为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问题。您所拥有的逻辑意味着,如果此人的姓名为空白(OUTPUT,则如果表中的 other 行已经为空白,则只能 插入他们。 (XY)名称。 似乎就像是设计缺陷。