我有下面的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'变量。尝试了许多转换方式但无法解决它。帮我解决一下。 :)