我已经创建了一个存储过程,该过程应根据所采取的操作返回字符串值。查询是所有工作正常,除了我得到@return_value(“将varchar值转换为int)的错误...我试着铸造两个值与查询,但它不工作...从存储过程返回字符串值不起作用
错误我收到:
Conversion failed when converting the varchar value 'Request ID: 454 captured on 2017-04-25 10:16:07' to data type int.
这是我做什么我的SQL代码:
USE [VehicleManagement]
GO
/****** Object: StoredProcedure [dbo].[spSaveContractsCaptured]
Script Date: 2017/04/23 8:56:10 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_SaveContractsCaptured]
@VehicleServiceRequestID int,
@InvoiceNo nvarchar(50),
@Amount decimal(18, 2),
@OdometerReading float,
@ExpiryDate datetime,
@ServiceDate datetime,
@CapturedBy nvarchar(50),
@CapturedDate datetime,
@ContractStartDate datetime,
@PeriodExpiry nvarchar(50),
@returnVal nvarchar(255) output
AS
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT ID FROM [VehicleManagement].[dbo].[VehicleService_Captured]
WHERE VehicleServiceRequestID = @VehicleServiceRequestID)
BEGIN
INSERT INTO [VehicleService_Captured] (VehicleServiceRequestID, InvoiceNo,
Amount, OdometerReading, ExpiryDate, ServiceDate, CapturedBy, CapturedDate, ContractStartDate, PeriodExpiry)
VALUES (@VehicleServiceRequestID, @InvoiceNo, @Amount, @OdometerReading, @ExpiryDate, @ServiceDate,
@CapturedBy, @CapturedDate, @ContractStartDate, @PeriodExpiry)
set @returnVal = SCOPE_IDENTITY()
RETURN CAST(@returnVal AS VARCHAR(255))
end
else
SET @returnVal = (SELECT 'Request ID: ' + convert(varchar,ID) + ' captured on ' + convert(varchar,[CapturedDate],120) FROM [VehicleManagement].[dbo].[VehicleService_Captured]
WHERE VehicleServiceRequestID = @VehicleServiceRequestID)
RETURN CAST(@returnVal AS nvarchar(255))
END
有我丢失的东西或我在做什么错
这可以帮助您http://stackoverflow.com/questions/6450194/how-to-return-string-value-from-the-stored-procedure – TriV