2016-08-12 38 views
0

データベーステーブルにFileNameという別のフィールドがあります。レコードをFileNameで選択する必要があります。コードに何を追加する必要がありますか?SQLストアドプロシージャselectステートメント

ALTER PROCEDURE [dbo].[spx_Pager] 
@PageNo int = 1, 
@ItemsPerPage int = 2, 
@TotalRows int out, 
@f_name nvarchar(50) 

AS 
BEGIN 
SET NOCOUNT ON 
DECLARE 
@StartIdx int, 
@SQL nvarchar(max), 
@SQL_Conditions nvarchar(max), 
@EndIdx int 

IF @PageNo < 1 SET @PageNo = 1 
IF @ItemsPerPage < 1 SET @ItemsPerPage = 10 

SET @StartIdx = (@PageNo -1) * @ItemsPerPage + 1 
SET @EndIdx = (@StartIdx + @ItemsPerPage) - 1 
SET @f_name = (@f_name) 
SET @SQL = 'SELECT FilePath 
      FROM (
      SELECT ROW_NUMBER() OVER(ORDER BY ID) AS Row, * 
        FROM tblFiles) AS tbl WHERE Row >= ' 
        + CONVERT(varchar(9), @StartIdx) + ' AND 
        Row <= ' + CONVERT(varchar(9), @EndIdx) 
EXEC sp_executesql @SQL 

SET @SQL = 'SELECT @TotalRows=COUNT(*) FROM tblFiles' 
EXEC sp_executesql 
    @query = @SQL, 
    @params = N'@TotalRows INT OUTPUT', 
    @TotalRows = @TotalRows OUTPUT 
END 
+1

なぜ動的SQLを使用しますか? –

+0

どのテーブルの別のフィールドですか?あなたはこれを詳しく説明する必要があります。 – scsimon

+0

同じテーブル "tblFiles" – user2970635

答えて

0

あなたは私に多くを与えてくれませんでした。しかし、これはあなたが必要とするものですか?

ALTER PROCEDURE [dbo].[spx_Pager] 
@PageNo int = 1, 
@ItemsPerPage int = 2, 
@TotalRows int out, 
@f_name nvarchar(50) 

AS 
BEGIN 
SET NOCOUNT ON 
DECLARE 
@StartIdx int, 
@SQL nvarchar(max), 
@SQL_Conditions nvarchar(max), 
@EndIdx int 

IF @PageNo < 1 SET @PageNo = 1 
IF @ItemsPerPage < 1 SET @ItemsPerPage = 10 

SET @StartIdx = (@PageNo -1) * @ItemsPerPage + 1 
SET @EndIdx = (@StartIdx + @ItemsPerPage) - 1 
SET @f_name = (@f_name) 
SET @SQL = 'SELECT FilePath 
     FROM (
     SELECT ROW_NUMBER() OVER(ORDER BY ID) AS Row, * 
       FROM tblFiles) AS tbl WHERE Row >= ' 
       + CONVERT(varchar(9), @StartIdx) + ' AND 
       Row <= ' + CONVERT(varchar(9), @EndIdx) + ' AND 
       FileName = @file_name' 
EXEC sp_executesql @SQL 

SET @SQL = 'SELECT @TotalRows=COUNT(*) FROM tblFiles' 
EXEC sp_executesql 
    @query = @SQL, 
    @params = N'@TotalRows INT OUTPUT', 
    @TotalRows = @TotalRows OUTPUT, 
    @file_name = @f_name 
END 
+0

私は上記のコードを試しましたが、私が得たエラーはスカラー変数 "f_name"を宣言しなければなりません – user2970635

+0

私は自分の答えを更新しました。私はあなたが持っている問題は、動的SQLでパラメータを使用する方法だと思います。私の答えがうまくいかない場合は、このリンクをチェックしてください、それは助ける必要があります。 http://www.aspsnippets.com/Articles/How-to-use-and-pass-parameters-to-dynamic-SQL-in-SQL-Server.aspx。 –

関連する問題