传入存储过程的字符串太长 有什么好的解决办法

copico 2009-04-09 01:24:52

CREATE proc [dbo].[proc_rms_matnr_arrive_add]
(
@asc_cd varchar(30)
,@s_matnr_id varchar(8000)
,@s_app_cnt varchar(8000)
,@delivery_no varchar(30)
,@tmpgi_ind varchar(30) = null
,@s_app_no varchar(8000)
)
as
begin


这里的三个8000的参数偶尔会超过8000
因为要使用涵数拆份 函数也只能接收8000的字符串,现在很棘手
请问高手有何解决办法
...全文
209 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
copico 2009-04-09
  • 打赏
  • 举报
回复
谢谢大家的回复,已经解决了,我用的是varchar(max)
我原来一直以为 varchar(max) = varchar(8000),没经过测试,我是个笨蛋
ks_reny 2009-04-09
  • 打赏
  • 举报
回复
只能拆分了.
nzperfect 2009-04-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 copico 的回复:]
varchar(max)是指多少啊?
[/Quote]
max 指示最大存储大小是 2^31-1 个字节
copico 2009-04-09
  • 打赏
  • 举报
回复
varchar(max)是指多少啊?
Zoezs 2009-04-09
  • 打赏
  • 举报
回复
2000好像只能拆,2005可以用varchar(max)吧。
ai_li7758521 2009-04-09
  • 打赏
  • 举报
回复
拆开吧,2000中没其他直接办法。
如果是2005就好了,有nvarchar(MAX)可用
ws_hgo 2009-04-09
  • 打赏
  • 举报
回复
2000的-->拆分
2005-->varchar(max)
sdhdy 2009-04-09
  • 打赏
  • 举报
回复
多定义几个varchar(8000),最后连接起来执行。

exec (@sql1+@sql2+@sql3+.........)
jdbcodbc 2009-04-09
  • 打赏
  • 举报
回复
kye_jufei 2009-04-09
  • 打赏
  • 举报
回复
拆成多個就可以了
nzperfect 2009-04-09
  • 打赏
  • 举报
回复
sql2k只能拆.
子陌红尘 2009-04-09
  • 打赏
  • 举报
回复
如果没有别的变通办法,只能拆成多个。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧