错误:子查询返回的值超过1。在seconde插入! [英] ERROR : Subquery returned more than 1 value. in the seconde insert !

查看:49
本文介绍了错误:子查询返回的值超过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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆