当前位置: 首页 > news >正文

网站结构优化做网站公司 衡阳公司

网站结构优化,做网站公司 衡阳公司,免费qq刷赞网站推广,wordpress优化记录以前一直用sql server2008,自从升级成sql server2019后,用OPENJSON的感觉像开挂,想想以前表作为参数传输时的痛苦,不堪回首。一》不堪回首 为了执行效率,很多时候希望将表作为参数传给数据库的存储过程。存储过程支持自…

以前一直用sql server2008,自从升级成sql server2019后,用OPENJSON的感觉像开挂,想想以前表作为参数传输时的痛苦,不堪回首。

》不堪回首
为了执行效率,很多时候希望将表作为参数传给数据库的存储过程。存储过程支持自定义表,只是很麻烦。
1.需要自定义一个表类型
create type paratable as table
(Pname varchar(20),Pcode varchar(20),id int)

2.创建存储过程,参数用自己定义的表类型
create procedure Procedurename
@Paratable paratable 
as
begin
insert into Mtable (Pname,Pcode) select Pname,Pcode from @Paratable
end
如果你的参数结构变量,又需要去修改自定义的表类型,很麻烦。
3.在程序端
SqlConnection myconn = new SqlConnection(connectionString);//链接数据库字符串
SqlCommand mycmd = myconn .CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Procedurename";
SqlParameter p = cmd.Parameters.AddWithValue("@Paratable", paratable);

二》开挂的OPENJSON的威力
有了sql server对Json的支持,状况改变了。
语法:OPENJSON( jsonExpression [ , path ] )  [ <with_clause> ]

第一个参数是你的json字符串
第二个参数是json中你要取的部分的路径
第三个参数指定字段名称<with_clause> ::= WITH ( { colName type [ column_path ] [ AS JSON ] } [ ,...n ] )

假设1:要传的Json字符为作为varchar(max)类型传输,
[
{
"name": "John",
"code":"T003"
},
{
"name": "Jane",
"code":"T004"
}
]
最简单的方式,Json里面只有一层:
不指定字段名称
select * from openjson(@pjson)
指定字段名称
select * from openjson(@pjson)
with (
name varchar(20) '$.name',
code varchar(20) '$.code'
)

不过我习惯给起个名,无名感觉不习惯。
{MyTable:
[
{
"name": "John",
"code":"T003"
},
{
"name": "Jane",
"code":"T004"
}
]
}
select * from openjson(@pjson,'$.MyTable')
with (
name varchar(20) '$.name',
code varchar(20) '$.code'
)

假设2:复杂一点,Json里面有层级
DECLARE @json NVARCHAR(MAX) = N'[  
{  
"Order": {  
"Number":"SO43659",  
"Date":"2011-05-31T00:00:00"  
},  
"AccountNumber":"AW29825",  
"Item": {  
"Price":2024.9940,  
"Quantity":1  
}  
},  
{  
"Order": {  
"Number":"SO43661",  
"Date":"2011-06-01T00:00:00"  
},  
"AccountNumber":"AW73565",  
"Item": {  
"Price":2024.9940,  
"Quantity":3  
}  
}
]'  

SELECT * FROM OPENJSON (@json)  
WITH (   
Number   VARCHAR(200)   '$.Order.Number',  
Date     DATETIME       '$.Order.Date',  
Customer VARCHAR(200)   '$.AccountNumber',  
Quantity INT            '$.Item.Quantity',  
[Order]  NVARCHAR(MAX)  AS JSON  
)

注:还附带了一个 $.sql:identity() 来指定标识列

Json的支持同时带来的还有表结构的设计变化,原来要主表明细表的,现在很多场景可以一张表搞定。

http://www.dtcms.com/a/425074.html

相关文章:

  • PCIe协议之低功耗篇之 理论深度学习(二)
  • 伪网站建站郑州网站制作天强科技
  • 网站后台文章编辑器网站怎么做运营推广
  • C++语言编程规范-作用域、模板和 C++其他特性
  • 做网站应该注意哪些问题wordpress 同城
  • 中国建设银行行号查询网站wordpress 小工具代码
  • 酒店网站建设公司dz做网站
  • 学习日报 20250929|缓存雪崩以及缓存穿透解决方案
  • 济南行业网站开发wordpress主题chuxia
  • 殷氏科技网站建设工作室如何选择网站开发
  • 电影网站域名wordpress add_action do_action
  • 营销网站与企业网站的区别电商网站详细设计
  • 有哪些网站是织梦做的wordpress写接口
  • 织梦做企业网站apache安装WordPress
  • cdr可以做网站页面吗温岭网络推广公司
  • 微网站 html标点狗logo设计官网
  • 乐清站在哪网站建设价格与方案
  • 单位写材料素材网站营销建设网站
  • php5mysql网站开发实例精讲asp.net 4.0网站开发
  • 山东济铁工程建设集团有限公司网站wordpress树形导航菜单
  • 淘宝客导购网站建设房产信息网显示已备案
  • mq网站开发苏州公司建设网站
  • 建设企业网站目的深圳外贸网站建设服务哪家好
  • 扬中网站优化哪家好wordpress新建阅读量字段
  • 做汽车养护的网站网盟推广和搜索推广的区别
  • 最新手机网站推荐建设网站火车票预订
  • 吉安市建设局施工管理站网站wordpress字体编辑插件下载
  • 网站如何选择服务器做毕业设计哪个网站好
  • Cubic 5分钟定制专属Ubuntu
  • 网站建设初级教程发广告平台有哪些免费