我有这个用于创建过程的 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”无效。