2016-12-21 5 views
0

私はStudentsという名前のテーブルを持っています。リスト内で利用可能な最大IDを取得したいので、IDで始まる他の生徒と最新リストを作成できます生徒機の表に表示されます。コードの説明は次のように書かれています。開始点が変数値に設定されているID

declare @maxStudentId int 
set @maxStudentId = (select max(StudentId) + 1 from Students) 

create table #tempStudents 
(
    tempId int identity(@maxStudentId, 1) primary key, 
    maxGrade int 
) 

私は、学生テーブルで利用可能な最大ID値の次の値を持っています。たとえば、Studentsのlast idは100ですので、@maxStudentIdには101という値があります。 新しいテーブルでは、開始IDを101に設定したいのですが、変数がそうでないためにidentity(@maxStudentId, 1)を設定しようとするとエラーが発生します。数字または整数、+または - 。どうすればこの作品を作れますか?動的SQLでこれを行うことができます

答えて

0

は、ここ(tempIdのint型のアイデンティティ、それは

declare @SQL varchar(max) 

declare @maxStudentId int 
set @maxStudentId = (select max(StudentId) + 1 from Students) 

set @SQL = 'create table #tempStudents ' + 
      '(' + 
      'tempId int identity(' + convert(varchar, @maxStudentId) + ', 1) primary key, ' + 
      'maxGrade int ' + 
      ') ' 

EXEC SP_EXECUTESQL @SQL 

変数@SQLがテーブル#tempStudentsを作成

のようなものが含まれます行う方法の例です。 (101,1)主キー、maxGrade int)

関連する問題