0
ALTER PROCEDURE [dbo].[AmendInsertDuplicateFields] (@ReportID varchar(50))
AS
BEGIN
    DECLARE @NewReportID VARCHAR(50)
    SET @NewReportID = NEWID()

    INSERT INTO [MVCOmar].[dbo].[PrideMVCCollisionBegin]
           ([ReportID], [LocalIncidentNum], [version], [MTOReferenceNo], [Submitted]) 
       SELECT 
          @NewReportID, [LocalIncidentNum], [version], [MTOReferenceNo], [Submitted] 
       FROM 
          [MVCOmar].[dbo].[PrideMVCCollisionBegin] 
       WHERE 
          [ReportID] = @ReportID;

得られた結果を取得しversion、文字列からint型に変換し、追加して文字列に変換し直して保存したいと思います。

バージョンはint文字列型ではなく、文字列型である必要があることを認めます。また、これを実現するためのさらに優れた方法は、プロパティを1ずつインクリメントするように設定することであることも認めています。

現在、優先順位が異なり、時間制限があり、コードが非常に古く、コーディングの習慣が不十分な多くの人々によって書かれているため、当面はこれらのオプションのいずれも実行できません。

4

3 に答える 3

4

あなたはそれを変換する必要はありません、これを実行してください、暗黙の変換があります

SELECT '1' + 1

それは2を返します

あなたの場合、あなたはただすることができます[version] + 1

于 2012-06-27T18:20:09.180 に答える
2

CONVERT関数を使用して、SELECTステートメントでこれをインラインで実行できます。

INSERT INTO [MVCOmar].[dbo].[PrideMVCCollisionBegin] ([ReportID], [LocalIncidentNum], [version], [MTOReferenceNo], [Submitted]) 
SELECT @NewReportID, [LocalIncidentNum], 
       CONVERT(VARCHAR, (CONVERT(INT, [version]) + 1)), 
       [MTOReferenceNo], [Submitted] 
FROM [MVCOmar].[dbo].[PrideMVCCollisionBegin] 
WHERE [ReportID]=@ReportID;
于 2012-06-27T18:20:07.090 に答える
1

SQLServerはCASTまたはCONVERTをサポートしています

CAST(col1 as int)

CONVERT(int,col1)
于 2012-06-27T18:19:58.967 に答える