怎样将批量纪录提交给存储过程?

中文命名法 2021-03-01 09:42:00
本来是客户端提交过来的批量新增纪录
 INSERT INTO 表 VALUES (值1,值2,值3,...)
现在要通过存储过程做一些判断后再处理。我也不想拆分成n条纪录,每条单独执行一下存储过程。能否让客户端一次性向存储过程提交批量的数据?
...全文
263 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2021-03-04
  • 打赏
  • 举报
回复
可以把记录用特殊字符拼接,到存储过程再拆分为临时表
吉普赛的歌 2021-03-04
  • 打赏
  • 举报
回复
专门为你写了一篇博客, 你看看: https://blog.csdn.net/yenange/article/details/114356424
吉普赛的歌 2021-03-04
  • 打赏
  • 举报
回复
引用 3 楼 中文命名方式倡导者 的回复:
[quote=引用 1 楼 吉普赛的歌 的回复:]你可以先看看我的3篇文章: 表值参数简介及与 C# 的交互 表值参数与分割字符串表值函数效率对比 OPENJSON简单应用
谢谢,这个看了很有用。我传底表值参数的时候,数据库已经有现成的表格式的情况下,我还要去重复自定义一个吗?
CREATE TYPE 自定义表格式 AS TABLE  ( 属性一 VARCHAR(50) , 属性二 INT)
假设我有这个表了,名字叫 已有表,我能不要再这样定义一遍吗?[/quote] 还是需要。表不是类型。 用得多,这样传值还是值得的。 如果一次性传的数据量非常大, 建议用 SqlBulkCopy , 直接构造 DataTable ,再将 DataTable 中的数据直接保存到表中, 这样的速度是最快的。 你不作其它逻辑处理, 只是保存,用 SqlBulkCopy 都是非常好的一种方式, 不需要表值参数。
中文命名法 2021-03-03
  • 打赏
  • 举报
回复
引用 1 楼 吉普赛的歌 的回复:
你可以先看看我的3篇文章: 表值参数简介及与 C# 的交互 表值参数与分割字符串表值函数效率对比 OPENJSON简单应用
谢谢,这个看了很有用。我传底表值参数的时候,数据库已经有现成的表格式的情况下,我还要去重复自定义一个吗?
CREATE TYPE 自定义表格式 AS TABLE  ( 属性一 VARCHAR(50) , 属性二 INT)
假设我有这个表了,名字叫 已有表,我能不要再这样定义一边吗?
唐诗三百首 2021-03-03
  • 打赏
  • 举报
回复
可以用临时表实现, 客户端连线后先创建临时表#t, 然后向临时表#t插入批量数据, 最后执行存储过程, 此时在存储过程里即可读取到该临时表的多行记录.
  • 打赏
  • 举报
回复
引用 3 楼 中文命名方式倡导者 的回复:
[quote=引用 1 楼 吉普赛的歌 的回复:]你可以先看看我的3篇文章: 表值参数简介及与 C# 的交互 表值参数与分割字符串表值函数效率对比 OPENJSON简单应用
谢谢,这个看了很有用。我传底表值参数的时候,数据库已经有现成的表格式的情况下,我还要去重复自定义一个吗?
CREATE TYPE 自定义表格式 AS TABLE  ( 属性一 VARCHAR(50) , 属性二 INT)
假设我有这个表了,名字叫 已有表,我能不要再这样定义一边吗?[/quote] 这个只是自定义数据类型,有了就可以不用再定义的,不然会报错
crazy_boom 2021-03-02
  • 打赏
  • 举报
回复
高版本 支持json 啦
吉普赛的歌 2021-03-02
  • 打赏
  • 举报
回复
你可以先看看我的3篇文章: 表值参数简介及与 C# 的交互 表值参数与分割字符串表值函数效率对比 OPENJSON简单应用 如果只是一个字段的数据,可以用逗号隔开再来切割。 如果有多个字段,可以用表值参数。 如果你的SQLServer版本比较高(2016+), 可以传json字符串,用 OPENJSON 来解析。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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