我有这个用于创建过程的 SQL:
create procedure [dbo].[spGetProduct](@col_sort varchar(100), @dir_sort varchar(4), @filters nvarchar(max)) as
begin
declare @temp table (
row_num int,
product_id int,
product_name nvarchar(255),
produnit_name nvarchar(50)
)
insert into @temp
EXEC('select * from (select (ROW_NUMBER() OVER (ORDER BY '+@col_sort+' '+@dir_sort+')) row_num, product_id, product_name, dbo.fnGetUnitName(ing_produnit) produnit_name
from dbo.Products
where '+@filters+') as tmp)
select * from @temp
end
信息:
dir_sort
可以是asc
或desc
并且col_sort
是包含列名之一的字符串。
在这种情况下,过滤器是无关紧要的。
什么时候col_sort
有值product_id
或者product_name
它工作正常,但是当我用它调用它时produnit_name
会抛出错误。
在这种情况下,如何按该列对数据进行排序?
编辑:
错误是:
列名“produnit_name”无效。