首页 > 解决方案 > 将到达存储过程的数据从 int 更改为 string。如何将分隔数据拆分为一组整数并执行过滤器?

问题描述

我有一个存储过程,它接受 4 个变量并根据它过滤数据。其中一个变量从 int 更改为 varchar。现在,varchar 必须执行 int 所做的过滤器。

尝试使用 status 作为 varchar 并使用 split 函数并收到错误。

现有代码:

ALTER PROCEDURE [dbo].[PROCNAME]
@IDorder as bigint,
@countofresult int = 5
@Ordering INTEGER,
@Status varchar = '1,2', -- this was accepting one int but now accepts a varchar
as
begin
select top (@countofresult) * from table1 inner join table2 on table1.orderstatus=table2.orderstatusprocess
where 
fkl_id = @IDorder
and 
table1.statusID=@status
table1.statusID in (select data from split(@Status,',')) or (@Status is null))  
order by
case when @Ordering = 0 then priceVal end asc 
case when @ordering =1 then priceVal end desc
end

这在状态为空时有效,但在状态为字符串时无效。我使用拆分错误吗?还是更改类型时选择数据的工作方式不同?

标签: sqlsql-serverstored-procedures

解决方案


推荐阅读