[英]add extra parameter in ms sql query
我需要创建一个mssql查询,在该查询中我想输入8个参数,它们是:
注意:粗体是我尚未实现的一种。
我当前的查询是这样的:
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (ORDER BY *sort_by*) as row
FROM *table_name*
) a
WHERE row > *start_row* AND row <= *limit_row*
我的问题是我怎么加table_primary_key, 列名 ,COLUMN_VALUE, 以我目前的查询?
我的目标是使查询从table_name显示数据,从start_row到limit_row,其中column_name = column_value。 数据将按sort_by排序,并且顺序是按顺序
如果我的问题很清楚,请问,谢谢
您可以尝试使用动态sql表达式,如下所示:
declare
@table_primary_key varchar(max) = 'ProjectID',
@table_name varchar(max) = 'ProjectList',
@start_row int = 10,
@limit_row int = 20,
@column_name varchar(max) = 'ProjectStatus',
@column_value varchar(max) = '5',
@sort_by varchar(max) = 'ProjectName',
@order varchar(4) = 'ASC' -- 'DESC'
declare
@sql varchar(max) = ''
set @sql = 'SELECT * FROM ( '
+ 'SELECT ' + @table_primary_key + ', ROW_NUMBER() OVER (ORDER BY ' + @sort_by + ' ' + @order + ') as row FROM ' + @table_name + ' WHERE ' + @column_name + ' = ''' + @column_value + ''') a'
+ ' WHERE row > ' + cast(@start_row as varchar) + ' and row <= ' + cast(@limit_row as varchar)
exec ( @sql )
或者您可以使用存储过程
create procedure dbo.GetResults
(
@table_primary_key varchar(max),
@table_name varchar(max),
@start_row int,
@limit_row int,
@column_name varchar(max),
@column_value varchar(max),
@sort_by varchar(max),
@order varchar(4)
)
as
begin
declare
@sql varchar(max) = ''
set @sql = 'SELECT * FROM ( '
+ 'SELECT ' + @table_primary_key + ', ROW_NUMBER() OVER (ORDER BY ' + @sort_by + ' ' + @order + ') as row FROM ' + @table_name + ' WHERE ' + @column_name + ' = ''' + @column_value + ''') a'
+ ' WHERE row > ' + cast(@start_row as varchar) + ' and row <= ' + cast(@limit_row as varchar)
exec ( @sql )
end
接着...
exec GetResults 'ProjectID', 'ProjectList', 10, 20, 'ProjectStatus', '5', 'ProjectName', 'ASC'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.