我试图在我的代码中创建一个if/else检查,以确保参数@BookTitle和@GenreName是表BookGenre和Genre中的记录,然后再尝试删除它们。我尝试编写这行代码,但收到了错误信息:
“在期望条件的位置指定了非布尔类型的表达式。”
我需要一些关于如何创建一个
以下是完整的存储过程(不包括IF语句):
“在期望条件的位置指定了非布尔类型的表达式。”
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
throw
异常),而只是尝试执行检查,则不清楚您为什么要执行该检查。如果您直接执行delete
语句,那么可以检查@@RowCount
。如果它是0
,则表示未找到标题、流派或两者都未找到。如果是1
,则书籍/流派对是唯一的。如果> 1
,则可能会感到惊讶。 - HABO