如何从EXEC sp_executeSql中选择?

Nam*_*Bui 5 t-sql sql-server

我的存储过程:

    @currPage int,
    @recodperpage int,
    @name varchar(20) = NULL,
    @type varchar(50) = NULL,
    @size varchar(50) = NULL,
    @country varchar(50) = NULL
AS
BEGIN
    DECLARE @Sql NVARCHAR(MAX);

    SELECT 
        @Sql = N'SELECT ROW_NUMBER() 
            OVER(ORDER BY MatchID Desc) AS RowNum, 
            MatchID,
            NameMatch,
            Images 
        FROM Match WHERE MatchID > 0 '

    IF @type IS NOT NULL
        SELECT @Sql += N' AND Type = ''' + REPLACE(convert(varchar(50),@type),'''','''''')+'''';

    IF @size IS NOT NULL
        SELECT @Sql += N' AND MatchSize = ''' + REPLACE(convert(varchar(50),@size),'''','''''')+'''';

    IF @country IS NOT NULL
        SELECT @Sql += N' AND Country = ''' + REPLACE(convert(varchar(50),@country),'''','''''')+''''

    EXEC SP_EXECUTESQL @Sql 
END
Run Code Online (Sandbox Code Playgroud)

我想要

select * 
from EXEC SP_EXECUTESQL @Sql result 
where RowNum between (@currPage - 1) * @recodperpage + 1 
                 and @currPage * @recodperpage
Run Code Online (Sandbox Code Playgroud)

gof*_*fr1 7

您可以使用@table与存储过程输出中相同的列来声明一个,然后:

INSERT INTO @table
EXEC SP_EXECUTESQL @Sql

SELECT *
FROM @table
where RowNum between (@currPage - 1) * @recodperpage + 1
                 and @currPage * @recodperpage
Run Code Online (Sandbox Code Playgroud)