错误:子查询返回的值超过1。在seconde插入! [英] ERROR : Subquery returned more than 1 value. in the seconde insert !
本文介绍了错误:子查询返回的值超过1。在seconde插入!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好,我有这个存储过程
Hello , i have this stored procedure
PROCEDURE [dbo].[MET_Dynamic_Pages_Insert_Tran]
--Pgae Var
@P_Name nvarchar(50),
--Status Var
@Create_Time nvarchar(100),
@Update_Time nvarchar(100),
--Relation Var
@P_Title nvarchar(200),
@P_Contenet nvarchar(max),
--Relation Var
@Cat_Id int,
@Is_Active bit,
@Menu_Show bit,
--Out Put Var
@PageIdSelect int output,
@MenuShow bit output
AS
BEGIN
BEGIN TRY
BEGIN TRAN
--Varibles
DECLARE @PageId int , @StatusId int,@ContentId int
-- insert The Page Name
INSERT INTO DynamicPages(P_Name)
VALUES(@P_Name)
Select @PageId=@@IDENTITY
-- insert The Page Status
INSERT INTO Status(P_Id,Create_Time,Update_Time)
VALUES(@PageId,@Create_Time,@Update_Time)
SELECT @StatusId=@@IDENTITY
-- insert The Page Content
INSERT INTO PagesContent(P_Title,P_Content,P_Id,S_Id)
VALUES(@P_Title,@P_Contenet,@PageId,@StatusId)
Select @ContentId=@@IDENTITY
-- insert The Page Relation
INSERT INTO DynamicPagesRelation(Dyn_Page_Id,Content_Id,Cat_Id,Status_Id,Is_Active,Menu_Show)
VALUES(@PageId,@ContentId,@Cat_Id,@StatusId,@Is_Active,@Menu_Show)
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
PRINT ' THERE WAS AN ERROR '
PRINT ERROR_MESSAGE()
END CATCH
SET @PageIdSelect=(SELECT @PageId FROM DynamicPagesRelation)
SET @MenuShow = (SELECT @Menu_Show FROM DynamicPagesRelation)
END
存储的第一次插入工作!
但是当我再次按下我的按钮使用这个存储它的说法!
错误:子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
thes stored work in the first insertion !
but when i push my button again to use this stored its say that !
ERROR : Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
推荐答案
由于以下内容为DynamicPagesRelation中的每条记录返回一条记录,因此存在问题。
Since the following returns a record for each record in DynamicPagesRelation you have a problem.
SET @PageIdSelect=(SELECT @PageId FROM DynamicPagesRelation)
SET @MenuShow = (SELECT @Menu_Show FROM DynamicPagesRelation)
我建议:
I would suggest:
SET @PageIdSelect = @PageId
SET @MenuShow = @Menu_Show
或可能:
or possibly:
SET @PageIdSelect=(SELECT TOP(1) @PageId FROM DynamicPagesRelation)
SET @MenuShow = (SELECT TOP(1) @Menu_Show FROM DynamicPagesRelation)
我不知道你在尝试什么,所以猜了。
I do not know what you are trying for so have made a guess.
这篇关于错误:子查询返回的值超过1。在seconde插入!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文