Ich habe eine gespeicherte Prozedur, die select * from book table
verwendet, Unterabfrage meine Abfrage istUnterabfrage hat mehr als 1 Wert zurückgegeben. Dies ist nicht zulässig, wenn die Unterabfrage =,! =, <,<=,>,> = oder wenn die Unterabfrage als Ausdruck verwendet wird
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ß, Sub-Abfrage zurückgeben ist mehr als eine Abfrage zur Haupt Abfrage, aber ich weiß nicht, wie diese Fehler zu vermeiden, kann jemand mir helfen?
Anscheinend Das 'select isbn' gibt mehr als einen Wert zurück. Du könntest 'where isbn IN benutzen (wähle isbn ...' –