1

@StartRowIndex + @MaximumRows を追加し、そこから 1 を減算する次の動的 SQL ステートメントがあります。ステートメントのどこに一重引用符を入れるかがわかりません。ここにあります:

SET @sql = @sql + ' SELECT *
 FROM
LicenseInfo
WHERE RowNum 
BETWEEN ' + @StartRowIndex + ' AND ' + 
'(' + @StartRowIndex + @MaximumRows + ')'  -  1
+ ' ORDER BY cnt desc'
4

3 に答える 3

3

@EndRowIndex動的 SQL ステートメントを作成する前に、新しい変数を作成して計算します。

何かのようなもの:

DECLARE @EndRowIndex int

SET @EndRowIndex = @StartRowIndex + @MaximumRows - 1

SET @sql = @sql + ' SELECT *
 FROM
LicenseInfo
WHERE RowNum 
BETWEEN ' + @StartRowIndex + ' AND ' + @EndRowIndex 
+ ' ORDER BY cnt desc'
于 2009-11-12T21:26:21.867 に答える
2

int パラメータを varchar にキャストする必要があります

SET @sql = @sql + ' SELECT *
 FROM
LicenseInfo
WHERE RowNum 
BETWEEN ' + @StartRowIndex + ' AND ' + 
'(' + CAST(@StartRowIndex as varchar(10)) + CAST(@MaximumRows as varchar(10)) + ') - 1  
 ORDER BY cnt desc'
于 2009-11-12T21:31:50.073 に答える
2

変数を宣言し、計算を行い、SQL ステートメントの生成時に varchar にキャストします。

DECLARE @LastRowIndex int

SET @LastRowIndex = @StartRowIndex + @MaximumRows - 1

SET @sql = @sql + ' 
SELECT *
FROM LicenseInfo
WHERE 1=1
AND RowNum BETWEEN ' + CAST (@StartRowIndex as VarChar) + 
' AND ' + CAST (@LastRowIndex as VarChar)
+ ' ORDER BY cnt DESC'

SQL Server が文字列値を連結できるようにするには、キャストする必要があります。そうしないと、nVarChar を数値に変換し、それらを数値として追加しようとします。

于 2009-11-12T21:37:39.863 に答える