SQL Server - Как создать ЕСЛИ СУЩЕСТВУЕТ ... ВЫБРАТЬ И ВЫБРАТЬ - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь создать проверку IF/ELSE в своем коде, чтобы убедиться, что параметры @BookTitle и @GenreName являются записями в таблицах BookGenre и Genre, прежде чем пытаться их удалить. Я попытался написать эту строку кода, но получил ошибку,

Выражение типа не-булева типа, указанное там, где ожидается условие.

IF EXISTS (SELECT Id FROM Library.Book WHERE Title = @BookTitle AND 
               SELECT Id FROM Library.Genre WHERE Name = @GenreName)
ELSE

Мне нужно несколько указаний о том, как создать выражение оператора IF EXISTS, которое включает в себя два отдельных оператора выбора как часть проверки IF.

Ниже приведена вся процедура хранения (без оператора IF):

PROCEDURE [Library].[DeleteDateFromBookGenre]
        -- Parameters to select which record delete
        @BookTitle nvarchar(200),
        @GenreName nvarchar(50)
    AS
    BEGIN
        -- SET NOCOUNT ON added to prevent extra result sets from
        -- interfering with SELECT statements.
        SET NOCOUNT ON;

        IF EXISTS (SELECT Id FROM Library.Book WHERE Title = @BookTitle) 
        IF EXISTS (SELECT Id FROM Library.Book WHERE Title = @BookTitle)

        -- Deletes the specified and selected data from the Genre and Book table.
        DELETE FROM Library.BookGenre 
        WHERE BookId IN (
        SELECT Id
        FROM Library.Book
        WHERE Title = @BookTitle
        ) AND
        GenreId IN (
        SELECT Id
        FROM Library.Genre
        WHERE Name = @GenreName
        )
    END

1 Ответ

0 голосов
/ 12 ноября 2018

Ваши скобки выключены; вам нужно два EXISTS условия:

IF EXISTS (SELECT Id FROM Library.Book WHERE Title = @BookTitle
          ) AND 
   EXISTS (SELECT Id FROM Library.Genre WHERE Name = @GenreName
          )
BEGIN
    . . .
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...