首页 新闻 会员 周边

存储过程 in()参数集合过多报错

0
悬赏园豆:10 [已解决问题] 解决于 2018-09-04 15:18

in括号内集合数超出108个报错,少于108个就能正常执行

问题补充:

USE [test_ZSdata]
GO

DECLARE @return_value int

EXEC @return_value = [dbo].[CRM_DeliveryOrdernVW_Search]
@Condition = N'DeliveryOrdernId in (111,111,111,111,111,111,111,111,111,111, 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111, 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111, 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111, 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111, 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,
111,111,111,111,111,111,111,111,111,111)'

SELECT 'Return Value' = @return_value

GO

消息:消息 102,级别 15,状态 1,第 14 行
“111”附近有语法错误。

(1 行受影响)

大神带带我吧的主页 大神带带我吧 | 初学一级 | 园豆:25
提问于:2018-09-04 14:02

什么数据库?

dudu 5年前

@dudu: SQL server 2014

大神带带我吧 5年前

@大神带带我吧: 报什么错误?

dudu 5年前

@dudu: “111”附近有语法错误

大神带带我吧 5年前
< >
分享
最佳答案
0

应该是 @Condition 变量定义的长度不够

收获园豆:10
dudu | 高人七级 |园豆:30994 | 2018-09-04 14:55

之前设定宽度500,没考虑到后面大批量数据集合

大神带带我吧 | 园豆:25 (初学一级) | 2018-09-04 15:18
其他回答(3)
0

如果 IN 的集合比较大,建议用 IN 表变量(或临时表)来处理。表变量在批处理结束后会自动被清除。

大豆男生 | 园豆:608 (小虾三级) | 2018-09-04 14:43
0

楼上+1。

徒然喜欢你 | 园豆:1741 (小虾三级) | 2018-09-04 15:01
0

CREATE TYPE [dbo].[IntegerTableType] AS TABLE(
[Value] [int] NOT NULL
)
自定以表类型,这样处理很方便

煤炭g | 园豆:129 (初学一级) | 2018-09-05 17:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册