2015-12-24 29 views
0

子查詢返回的值超過1。當 子查詢遵循=,!=,<,< =,>,> =或當子查詢用作 表達式時,這是不允許的。。幫我解決這個錯誤。我想將數據保存在兩個表中

我的aspx代碼..

protected void txtsave_Click(object sender, EventArgs e) 
{ 
     try 
     { 

      SqlCommand cmd = new SqlCommand("Insert_MainTable", con); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Parameters.AddWithValue("@Name", txtname.Text); 
      cmd.Parameters.AddWithValue("@Addr", txtaddr.Text); 
      cmd.Parameters.AddWithValue("@Qual", txtqual.Text); 
      cmd.Parameters.AddWithValue("@Dob", txtdob.Text); 
      con.Open(); 
      cmd.ExecuteNonQuery(); 
      con.Close(); 
     } 
     catch { } 
    } 
} 

,我的程序..

USE [Harish] 
GO 
/****** Object: StoredProcedure [dbo].[Insert_MainTable] Script Date: 24-12-2015 16:36:19 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER procedure [dbo].[Insert_MainTable] 


@Name varchar(50), 
@Addr varchar(50), 

@Qual varchar(50), 
@Dob varchar(50) 
as begin 


insert into MainPracticeTable(Name,Addr) values(@Name,@Addr) 

declare @Eid int 
set @Eid=(select Id from MainPracticeTable where [email protected]) 


insert into PracticeTable(Eid,Qual,Dob)values(@Eid,@Qual,@Dob) 

end 

Thanku提前。

回答

3

此語句返回多行

select Id from MainPracticeTable where [email protected] 

因此,無論解決您的where條款或補充top關鍵字與order by

set @Eid=(select TOP 1 Id from MainPracticeTable where [email protected] order by somecol) 

select @Eid= Id from MainPracticeTable where [email protected] 
+0

由於其工作。 –

+0

@HarishSangwan - 如果這對你有幫助,你需要將它標記爲答案 –