次のストアドプロシージャでエラーが発生します。私はSQLに新しいですし、現在ではないパーまでまだとにかく、ここで私は渡している値であることを言いたい:メッセージ248、レベル16、状態1、行1 varchar値 '60811404740101-60811404740102'の変換がint列をオーバーフローしました
ALTER PROCEDURE [dbo].[csp_WellTestValidationResults_GetData]
-- Declare variables that will get data passed from PIAF to query data
(@ColumnName varchar(max) = 'Blank',
@ColumnValue varchar(max) = 'Blank')
AS
BEGIN
SET NOCOUNT ON;
IF (@ColumnName = 'API14-2')
BEGIN
DECLARE @APIStrip varchar(max);
SET @APIStrip = SUBSTRING(@ColumnName, 0, CHARINDEX('- ', @ColumnName, 0));
DECLARE @LeftNumber varchar(max);
SET @LeftNumber = SUBSTRING(@ColumnValue, 0, CHARINDEX('-', @ColumnValue, 0));
DECLARE @RightNumber varchar(max)
SET @RightNumber = SUBSTRING(@ColumnValue, CHARINDEX('-', @ColumnValue, 0) + 1, LEN(@ColumnValue));
EXEC('Select * from dbo.SSIS_RTRM_WellTestValidationResults where '[email protected]+' = '[email protected]+' OR '[email protected]+' = '[email protected]+' order by TestDate Desc')
END
IF (@ColumnName = 'API14')
BEGIN
EXEC('Select * from dbo.SSIS_RTRM_WellTestValidationResults where '[email protected]+' = '''[email protected]+''' order by AssetName, ReservoirName, API14, TestDate Desc')
END
IF (@ColumnName <>'AssetName') or (@ColumnName <>'ReservoirName') or (@ColumnName <>'FieldName')
BEGIN
EXEC('Select wtvv.* from dbo.SSIS_RTRM_WellTestValidationResults wtvv join '+'(select WellId, Max(TestDate) AS TestDate from dbo.SSIS_RTRM_WellTestValidationResults wtv group by WellId)'+' wtvv1 on wtvv1.WellId = wtvv.WellId and wtvv1.TestDate = wtvv.TestDate where '[email protected]+' = '''[email protected]+''' order by AssetName, ReservoirName, API14')
END
IF (@ColumnName <>'AssetName') or (@ColumnName <>'ReservoirName') or (@ColumnName<> 'FieldName')or (@ColumnName <>'API14-2')or (@ColumnName <>'API')
BEGIN
SELECT *
FROM dbo.SSIS_RTRM_WellTestValidationResults
WHERE WellId = ''
END
END
:
USE [AFCache]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[csp_WellTestValidationResults_GetData]
@ColumnName = N'API14-2',
@ColumnValue = N'60811404740101-60811404740102'
SELECT 'Return Value' = @return_value
GO
、ここでは実際のストアドプロシージャです
私は、私は次のエラーを取得しておくクエリを実行する場合:
Msg 248, Level 16, State 1, Line 1
The conversion of the varchar value '60811404740101-60811404740102' overflowed an int column.
を私は、コードを介して行っていると私の問題と、なぜ私はこのエラーを取得していますが、ここで私は理解していません。
はい、私はその後、その後、ダッシュの左右を解析し、ダッシュで区切られた2つの値を渡しています私が解析した左と右の値に基づいてクエリの残りのコードを実行します。 @columevalueを型bigintに変更すると、ダッシュをどのように渡しますか?私は渡された数字を解析するためにダッシュを持っている必要があります。 – JPM1
エラーはテーブルであり、パラメータではありません – TTeeple
エラーはカラム 'API14'のデータタイプにあります。変数ではありません。変数は既に 'varcahr(max)'になっています。数値を分割し、数値が 'int'データ型のため大きすぎるので失敗している' API14'に数値を挿入しようとします。データ型を変更しても変数には影響しません。 – Matthew