Unterabfrage hat mehr als 1 Wert zurückgegeben. Dies ist nicht zulässig, wenn die Unterabfrage =,! =, <, <=,>,> = Folgt oder wenn die Unterabfrage als Ausdruck verwendet wird

Ich habe eine gespeicherte Prozedur, dieselect * from book table Unter Verwendung der Unterabfrage ist meine Abfrage

USE [library]
GO

/****** Object:  StoredProcedure [dbo].[report_r_and_l]    Script Date: 04/17/2013 12:42:39 ******/

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER procedure [dbo].[report_r_and_l]
@fdate date,
@tdate date,
@key varchar(1)
as

if(@key='r')

    select * 
    from dbo.books 
    where isbn =(select isbn from dbo.lending where (act between @fdate and @tdate) and (stat ='close'))

else if(@key='l')

    select * 
    from dbo.books 
    where isbn =(select isbn from dbo.lending where lended_date between @fdate and @tdate)

Ich weiß, dass eine Unterabfrage mehr als eine Abfrage an die Hauptabfrage zurückgibt. Aber ich weiß nicht, wie ich diesen Fehler vermeiden kann. Kann mir jemand helfen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage