日期:2014-05-16  浏览次数:20499 次

请教个sql基础的问题
下面的存储过程,当使用isnull(id,0)查询id的时候,当数据不存在的时候返回的不是0,好像是个null
在红色部分我应该怎样判断


USE [YFTrade]
GO
/****** Object:  StoredProcedure [dbo].[dispatch_receipt_Checked]    Script Date: 03/11/2014 16:57:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[dispatch_receipt_Checked] 
-- Add the parameters for the stored procedure here
@Output int output,
@ID varchar(100) ,
@type varchar(100),
@driveLicense varchar(100) ,
@drivingLicense varchar(100),
@driveCode varchar(100),
@engineCode varchar(100),
@carSort varchar(100),
@carType varchar(100),
@tel varchar(100),
@operator varchar(100) ,
@operDate datetime,
@GMID varchar(100),
@identification varchar(100),
@name varchar(100),
@oper_ID varchar(100)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
begin TRANSACTION
declare @rtn int
set @rtn = 0
-- Insert statements for procedure here
Begin
Insert into [dbo].[D-BFPC-Dispatch-His]
select *,@Operator,GETDATE(),1 from [dbo].[D-BFPC-Dispatch] where [ID] = @ID
end
If(@type <> '0')
Begin

Update [dbo].[D-BFPC-Dispatch]
Set [receiptChecked] =0
Where [ID]=@ID


if(@@error <> 0) or (@@ROWCOUNT <> 1)
begin
 set @rtn = 2
 goto Error
end
end
else
declare @CMID int
select @CMID=ISNULL(id,0)from [dbo].[D-JC-CarManagement] where GMID=@GMID and drivingLicense=@drivingLicense and name=@name
if(@CMID=0)
begin
insert into [dbo].[D-JC-CarManagement](

[driveLicense],
[drivingLicense],
[driveCode],
[engineCode],
[carSort],
[carType],
[tel],
[operator],
[oper_date],
[GMID],
[identification],
[name]
)
Values
(
@driveLicense,
@drivingLicense,
@driveCode,
@engineCode,
@carSort,
@carType,
@tel,
@operator,
@operDate,
@GMID,
@identification,
@name
)
select @CMID=ISNULL(id,0)from [dbo].[D-JC-CarManagement] where GMID=@GMID and drivingLicense=@drivingLicense and name=@name
Update  [dbo].[D-BFPC-Dispatch]
Set [receiptChecked]=@CMID
Where [ID]=@ID

END



if(@@error <> 0) or (@@ROWCOUNT <> 1)
begin
 set @rtn = 2
 goto Error
end



COMMIT TRANSACTION 
set @Output = @rtn
RETURN @rtn
Error:
ROLLBACK TRANSACTION 
set @Output = @rtn
RETURN @rtn
END

-----