sql - 如何修复“子查询返回多个值”?
问题描述
我正在尝试编写一个存储过程,该过程必须验证我的数据库中是否不存在名称,如果名称不存在,我将创建一个带有名称的新行并通过。
我有这个错误:子查询返回多个值。
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;
解决方案
似乎您所追求的逻辑是:
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
参数),并可能给它一个“更好”的名称。
不过,这似乎确实是个XY
问题。您拥有的逻辑意味着,如果此人的姓名为空白 ( ''
),则只有在表中的其他行已经有空白 ( ) 姓名时才能插入他们。这似乎是一个设计缺陷。''
推荐阅读
- javascript - 无法在 Laravel 中获取数据
- ios - 如何在 ios 中创建客户端库以与 Turn Server 通信?
- php - 上传多个图像时,获取数据库中的文件夹名称
- java - 从 C++ 调用 Java 方法
- reactjs - 如何在 React JS 中使用 D3 在 Force-Directed Graph 中同一组的节点周围创建一个凸包?
- haskell - 如何使用 Haskell 访问树节点的数值
- python - 嵌套循环使用正则表达式 python
- javascript - 为嵌套的 if 条件反应条件渲染
- asp.net-core - 如何检测用户下载结果
- ajax - select2 ajax 加载数据在部分视图 ASP .NET MVC 中不起作用