将varchar值'0_2018-06-22'转换为数据类型int时转换失败

时间:2018-01-18 08:46:20

标签: sql

我有下面的SP,它给出了像这样的错误,将varchar值'0_2018-06-22'转换为数据类型int。'在最后一行时转换失败。

USE [Db]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[Check_Availability_Then_Insert]
@IssueDate datetime,
@ProductType varchar(10),
@ProductCode varchar(10),
@MobileNumber varchar(10),
@BillNumber varchar(20),
@Result varchar(500) OUTPUT

AS
BEGIN
SET NOCOUNT ON;

declare @datestring varchar(100)
set @datestring = ''

IF EXISTS ( select * from Booking where ProductCode = @ProductCode and ProductType = @ProductType and DateOfIssue BETWEEN DATEADD(dd, -1, @IssueDate) and DATEADD(dd, 1, @IssueDate))
    BEGIN
    SET @Result = '0'

    IF OBJECT_ID('tempdb.dbo.#dates', 'U') IS NOT NULL
    DROP TABLE #dates;
    create table #dates (date datetime)

    insert into #dates 
        select DateOfIssue from Booking where ProductCode = @ProductCode and ProductType = @ProductType and DateOfIssue BETWEEN DATEADD(dd, -1, @IssueDate) and DATEADD(dd, 1, @IssueDate)

    select @datestring = @datestring + LEFT(CONVERT(VARCHAR, date, 120),10) + ',' from #dates
    set @datestring = SUBSTRING(@datestring, 0, LEN(@datestring))

END
ELSE
    BEGIN
    Insert into Booking (DateOfIssue, DateOfRegistration, ProductCode, MobileNumber, ProductType, BillNumber) values (CONVERT(datetime,@IssueDate), GETDATE(),@ProductCode, @MobileNumber, @ProductType, @BillNumber)
    SET @Result = CAST (SCOPE_IDENTITY() AS varchar(500))
END

set @Result =CAST(@Result AS VARCHAR(500)) +'_'+@datestring;

set @Result = CAST(@Result AS VARCHAR(500));
return @Result
END

虽然收到此错误但我没有使用任何'int'变量。尝试了许多转换方式但无法解决它。帮我解决一下。 :)

0 个答案:

没有答案