gpt4 book ai didi

sql-server - 参数化 OFFSET 和 FETCH NEXT 的值

转载 作者:行者123 更新时间:2023-12-05 04:11:42 25 4
gpt4 key购买 nike

有什么办法吗?

我希望能够通过 EXEC sp_executesql 将其作为动态 sql 运行

目前 - 它只是一个字符串连接

像这样:

SET @sql += '
ORDER BY em.[Date] ' + IIF (@sortOrder = 'asc', 'ASC', 'DESC') + '
OFFSET ' + CONVERT (VARCHAR, @pageNum*@pageSize) + ' ROWS
FETCH NEXT ' + CONVERT (VARCHAR, @pageSize) + ' ROWS ONLY'

理想情况下,我希望它是:

SET @sql += '
ORDER BY em.[Date] ' + IIF (@sortOrder = 'asc', 'ASC', 'DESC') + '
OFFSET @offset ROWS
FETCH NEXT @rows ROWS ONLY'

最佳答案

您可以通过在调用 sp_executesql 时传递变量值来执行包含变量的动态 TSQL 命令。

这应该有效:

DECLARE @sql nvarchar(max)  
DECLARE @parameters nvarchar(max)
DECLARE @tmp_offset int

--create dynamic sql command with variables
SET @sql += '
ORDER BY em.[Date] ' + IIF (@sortOrder = 'asc', 'ASC', 'DESC') + '
OFFSET @offset ROWS
FETCH NEXT @rows ROWS ONLY'

--calculate offset
SET @tmp_offset = @pageNum * @pageSize

--define the parameters that will be used inside dynamic SQL
SET @parameters = N'@offset int, @rows int'

--execute dynamic sql passing variables' values
EXECUTE sp_executesql @sql, @parameters, @offset = @tmp_offset, @rows = @pageSize

关于sql-server - 参数化 OFFSET 和 FETCH NEXT 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42283970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com