我正试图编写一个存储过程,这些存储过程必须验证数据库中是否不存在名称,如果名称不存在,则使用名称和密码创建新行。
我遇到此错误:子查询返回多个值。
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;
答案 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
)名称。 似乎就像是设计缺陷。