100分问一个超简单问题 -- 存储过程返回长字符串(>8000)

liulangonline 2007-12-08 04:03:07

-------------------------------------------------------
--建立存储过程
------------------------------------------------------
create procedure myProc(@returnVal nvarchar(4000) output)
as
set @returnVal='...'
go

--------------------------------------------------------
/*
发现问题:
1.当@returnVal的长度很大时,只能得到前面4000个字符.
2.换成varchar(8000)也只有8000个字符,且没有中文的情况下.
3.text类型不能做参数.

目的:
返回长字符串(>8000个字符).

求解决方案,谢谢!
*/
----------------------------------------------------------
...全文
299 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyanxiang 2007-12-09
  • 打赏
  • 举报
回复
用ntext 不行吗
whw123456 2007-12-09
  • 打赏
  • 举报
回复
路过·~
satanbo 2007-12-09
  • 打赏
  • 举报
回复
不太明白
cxmcxm 2007-12-08
  • 打赏
  • 举报
回复
用参数不能直接返回,
对长字符串,用表查询返回结果集吧.

liulangonline 2007-12-08
  • 打赏
  • 举报
回复
哈哈,爱死你了,E_Sorl
E_Sorl 2007-12-08
  • 打赏
  • 举报
回复
楼主用得4个嵌套的游标来写存储过程,相信不是高手也是老手了,给你个提示吧:
定义临时表:
declare #temp(returnVal text)
在循环中将你的 set @returnVal=@returnVal+'...' 改成 insert into #temp(returnVal) values ('...')
最后就select * from #temp 吧,
累加的工作就交给C#吧.
DemonXHunter 2007-12-08
  • 打赏
  • 举报
回复
如果是SQL 2005 的话,还可以考虑使用 CLR来写存储过程。
DemonXHunter 2007-12-08
  • 打赏
  • 举报
回复
我上面搞错了,运行时出错了。楼主可以考虑使用XP(extended stored procedure)来做
DemonXHunter 2007-12-08
  • 打赏
  • 举报
回复
楼主,我的sql 2005 express, 用ntext做类型没有出错啊?
liulangonline 2007-12-08
  • 打赏
  • 举报
回复
问题是游标在循环累加时组不成这个长字符串!
对于局部变量,text、ntext 和 image 数据类型无效。
wzy_love_sly 2007-12-08
  • 打赏
  • 举报
回复
是05,但我测试完,max不还是8000吗?没看明白
@returnVal nvarchar(4000) output,@returnVal nvarchar(4000) output
写2个不行吗?
elvis_gao 2007-12-08
  • 打赏
  • 举报
回复
看来”返回长字符串>8000个字符“的确是个问题,sql server2000 摆渡下也没找到更好的,要不就将字符串转化成数据集返回
liulangonline 2007-12-08
  • 打赏
  • 举报
回复
不能,我的存储过程是由4个嵌套的游标组成,返回值是在循环中累加的.
fa_ge 2007-12-08
  • 打赏
  • 举报
回复
看来2005功能是更强大了
zhouhaihe 2007-12-08
  • 打赏
  • 举报
回复
多个变量返回可以吗?
elvis_gao 2007-12-08
  • 打赏
  • 举报
回复
学习了,varchar(max)这个东西还是第一次看到,惭愧
火星求索 2007-12-08
  • 打赏
  • 举报
回复
2000 我们测试过,也没有环境
火星求索 2007-12-08
  • 打赏
  • 举报
回复
恩,
忘说了,是2005
fa_ge 2007-12-08
  • 打赏
  • 举报
回复
2楼用的是sql2005吗?sql2000 怎么不行,我以前也看过别人说 varchar(max),但我试不成功
liulangonline 2007-12-08
  • 打赏
  • 举报
回复


-------------------------------------------------------
--建立存储过程
------------------------------------------------------
create procedure myProc(@returnVal nvarchar(4000) output)
as
set @returnVal='...'
go


--------------------------------------------------------
--提出问题
--------------------------------------------------------
/*
发现问题:
1.当@returnVal的长度很大时,只能得到前面4000个字符.
2.换成varchar(8000)也只有8000个字符,且没有中文的情况下.
3.text类型不能做参数.

目的:
返回长字符串(>8000个字符).

求解决方案,谢谢!
*/
加载更多回复(3)
内容概要:本文介绍了DeepSeek在职场中的应用,从提示语技巧到多场景应用,涵盖了DeepSeek的基础模型(V3)、深度思考模型(R1)及其联网搜索功能。文中详细描述了DeepSeek的模型对比,包括操作规范、结果导向、路径灵活性、响应模式和风险特征等方面。此外,还探讨了DeepSeek在制作可视化图表、PPT、海报、视频以及批量生成新媒体文案等具体应用场景中的使用方法和技巧。最后,文章展示了DeepSeek在市场调查、AI应用开发等方面的应用实例,强调了其在人机协同和共生领域的潜力。 适用人群:适用于希望提升工作效率和创新能力的职场人士,特别是从事数据分析、内容创作、市场营销、AI开发等领域的专业人士。 使用场景及目标:①通过DeepSeek的基础模型(V3)和深度思考模型(R1)进行高效的任务处理和复杂推理;②利用DeepSeek制作可视化图表、PPT、海报和视频,提高内容创作的质量和效率;③通过DeepSeek进行市场调查和AI应用开发,优化业务流程并推动创新。 其他说明:DeepSeek不仅提供了强大的AI工具,还强调了人机协同的重要性。用户在使用过程中应注意操作规范,结合实际需求选择合适的模型,并充分利用DeepSeek的各项功能来实现高效的职场应用。文中还提到了多个国际竞赛中的获奖情况,展示了DeepSeek团队在AI领域的卓越实力。

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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