ストアドプロシージャを作成しました。このプロシージャは、どのアクションが取られたかに基づいて文字列値を返す必要があります。 @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
はTrivが指摘したように、私が行方不明ですか私が間違って何をやっている
これはあなたを助けることができますhttp://stackoverflow.com/questions/6450194/how-to-return-string-value-from-the-stored-procedure – TriV