使用varchar(max)变量接受返回值,总是不成功,求大大们解决

weixin_34346991 2019-03-07 10:38:40
declare @STR_CONTENT varchar(MAX) ----文件内容
EXEC @INT_ERR=SP_OAMETHOD @INT_OPENFILE,'ReadAll',@STR_CONTENT OUT

使用FSO对象的方法,读取硬盘TXT文件的内容,内容大于8000字符,只能用VARCHAR(MAX)。可总是返回不成功,好久找不到办法怎么办
PS:如果定义成VARCHAR(N)这种读8000字符以内都是没问题的。
...全文
277 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_34346991 2019-03-09
  • 打赏
  • 举报
回复
引用 7 楼 吉普赛的歌 的回复:
[quote=引用 6 楼 weixin_34346991 的回复:]
[quote=引用 4 楼 吉普赛的歌 的回复:]
导入硬盘文本文件到表中, 可以使用: https://docs.microsoft.com/zh-cn/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-ver15

预先定义一个表就可以了。


这个只能读取格式统一的文件,我的文件头部两行中文,尾部要去掉最后一行。用xml格式文件也不太好使。[/quote]

无所谓吧, 读进来了自己稍稍处理一下就是了[/quote]
bulk insert只能读取格式化文档,我就是要读取啊,文件100多k,8000字符的varchar会截断。用varchar(max)处理一下,再导入
weixin_34346991 2019-03-09
  • 打赏
  • 举报
回复
引用 9 楼 吉普赛的歌 的回复:
[quote=引用 8 楼 weixin_34346991 的回复:] [quote=引用 7 楼 吉普赛的歌 的回复:] [quote=引用 6 楼 weixin_34346991 的回复:] [quote=引用 4 楼 吉普赛的歌 的回复:] 导入硬盘文本文件到表中, 可以使用: https://docs.microsoft.com/zh-cn/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-ver15 预先定义一个表就可以了。
这个只能读取格式统一的文件,我的文件头部两行中文,尾部要去掉最后一行。用xml格式文件也不太好使。[/quote] 无所谓吧, 读进来了自己稍稍处理一下就是了[/quote] bulk insert只能读取格式化文档,我就是要读取啊,文件100多k,8000字符的varchar会截断。用varchar(max)处理一下,再导入[/quote] 你想一次性读一整块是吧? 随便搞一个不会出现的字符作为分行符不就可以了?[/quote] 对,一整块。愿闻其详,我不懂的。多谢你的热心回复
吉普赛的歌 2019-03-09
  • 打赏
  • 举报
回复
引用 6 楼 weixin_34346991 的回复:
[quote=引用 4 楼 吉普赛的歌 的回复:] 导入硬盘文本文件到表中, 可以使用: https://docs.microsoft.com/zh-cn/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-ver15 预先定义一个表就可以了。
这个只能读取格式统一的文件,我的文件头部两行中文,尾部要去掉最后一行。用xml格式文件也不太好使。[/quote] 无所谓吧, 读进来了自己稍稍处理一下就是了
吉普赛的歌 2019-03-09
  • 打赏
  • 举报
回复
引用 8 楼 weixin_34346991 的回复:
[quote=引用 7 楼 吉普赛的歌 的回复:] [quote=引用 6 楼 weixin_34346991 的回复:] [quote=引用 4 楼 吉普赛的歌 的回复:] 导入硬盘文本文件到表中, 可以使用: https://docs.microsoft.com/zh-cn/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-ver15 预先定义一个表就可以了。
这个只能读取格式统一的文件,我的文件头部两行中文,尾部要去掉最后一行。用xml格式文件也不太好使。[/quote] 无所谓吧, 读进来了自己稍稍处理一下就是了[/quote] bulk insert只能读取格式化文档,我就是要读取啊,文件100多k,8000字符的varchar会截断。用varchar(max)处理一下,再导入[/quote] 你想一次性读一整块是吧? 随便搞一个不会出现的字符作为分行符不就可以了?
丰云 2019-03-08
  • 打赏
  • 举报
回复
你也知道内容大于8000字符了。。。 换text或ntext
weixin_34346991 2019-03-08
  • 打赏
  • 举报
回复
引用 4 楼 吉普赛的歌 的回复:
导入硬盘文本文件到表中, 可以使用: https://docs.microsoft.com/zh-cn/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-ver15

预先定义一个表就可以了。


这个只能读取格式统一的文件,我的文件头部两行中文,尾部要去掉最后一行。用xml格式文件也不太好使。
weixin_34346991 2019-03-08
  • 打赏
  • 举报
回复
使用的是系统存储过程SP_OAMETHOD,这个是可以有返回值的,把变量定义成varchar(n) n<8000,都是可以正常读取文件的
吉普赛的歌 2019-03-08
  • 打赏
  • 举报
回复
导入硬盘文本文件到表中, 可以使用: https://docs.microsoft.com/zh-cn/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-ver15 预先定义一个表就可以了。
Dear SQL(燊) 2019-03-08
  • 打赏
  • 举报
回复
存储过程参数是不是没有定义out 如:

create proc up_test(
     @code varchar(50),
     @erro nvarchar(max) out
)


weixin_34346991 2019-03-08
  • 打赏
  • 举报
回复
不是说varchar(max)是来替代text的么,而且我需要用到很多函数来处理文本,用text没几个函数科用不合适。
不到8000个字符,用varchar(max)变量接收也是不行的

22,209

社区成员

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

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