存储过程不返回预期值

时间:2017-04-18 11:34:26

标签: sql sql-server

我正在执行以下存储过程,该过程返回0值:

CREATE PROCEDURE [dbo].[sproc_tblBook_DisplayReservations]

@bor_id varchar (9)

AS
    SELECT bor_id, isbn, bk_author, bk_title, 
            cop_loan_type, cop_status, res_date

    FROM tblBook, tblReservation, tblCopy, tblBorrower

    WHERE
    tblReservation.res_cleared_date = NULL
    AND
    tblBook.isbn = tblReservation.fk1_isbn
    AND
    tblBook.isbn = tblCopy.fk1_isbn
    AND
    tblBorrower.bor_id = tblReservation.fk2_bor_id
    AND
    bor_id = @bor_id;
RETURN 0

当然,期望的结果是它显示符合where条件标准的记录 这些记录存在,但它们没有显示 我确信我的语法是正确的,所以我完全彻底难倒 乍一看,如果您有任何建议,请告诉您 如果有人想仔细看看,我已将我的节目联系在一起 不幸的是,我认为这对于帮助我解决这个问题非常重要,但是,如果有人读过这篇文章,那么谢谢你。
以下链接是我在Visual Studio中工作的程序(.zip文件 - 如果需要,可随意升级.mdf文件/ sql服务器): http://s000.tinyupload.com/index.php?file_id=07002279584481194620

如果你有时间,请下载我的程序,看看你是否能找到问题!

1 个答案:

答案 0 :(得分:2)

tblReservation.res_cleared_date = NULL更改为tblReservation.res_cleared_date IS NULL。在Sql中,没有任何东西等于null,甚至没有其他null 另外,将隐式连接更改为显式连接:

CREATE PROCEDURE [dbo].[sproc_tblBook_DisplayReservations]

@bor_id varchar (9)

AS
    SELECT  bor_id, isbn, bk_author, bk_title, 
            cop_loan_type, cop_status, res_date
    FROM tblBook
    INNER JOIN tblReservation ON tblBook.isbn = tblReservation.fk1_isbn 
    INNER JOIN tblCopy ON tblBook.isbn = tblCopy.fk1_isbn
    INNER JOIN tblBorrower ON tblBorrower.bor_id = tblReservation.fk2_bor_id
    WHERE tblReservation.res_cleared_date IS NULL
    AND bor_id = @bor_id;
RETURN 0