SQL SERVER 數據導出JSON

執行下面的存儲過程:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE[dbo].[SerializeJSON](
@ParameterSQL AS VARCHAR(MAX)
)
AS
BEGIN
??
DECLARE @SQL NVARCHAR(MAX)
DECLARE @XMLString VARCHAR(MAX)
DECLARE @XML XML
DECLARE @Paramlist NVARCHAR(1000)
SET @Paramlist = N'@XML XML OUTPUT'
SET @SQL = 'WITH PrepareTable (XMLString)'
SET @SQL = @SQL + 'AS('
SET @SQL = @SQL + @ParameterSQL+ 'FOR XML RAW,TYPE,ELEMENTS'
SET @SQL = @SQL + ')'
SET @SQL = @SQL + 'SELECT @XML=[XMLString]FROM[PrepareTable]'
EXEC sp_executesql @SQL, @Paramlist, @XML=@XML OUTPUT
SET @XMLString=CAST(@XML AS VARCHAR(MAX))
??
DECLARE @JSON VARCHAR(MAX)
DECLARE @Row VARCHAR(MAX)
DECLARE @RowStart INT
DECLARE @RowEnd INT
DECLARE @FieldStart INT
DECLARE @FieldEnd INT
DECLARE @KEY VARCHAR(MAX)
DECLARE @Value VARCHAR(MAX)
??
DECLARE @StartRoot VARCHAR(100);SET @StartRoot='<row>'
DECLARE @EndRoot VARCHAR(100);SET @EndRoot='</row>'
DECLARE @StartField VARCHAR(100);SET @StartField='<'
DECLARE @EndField VARCHAR(100);SET @EndField='>'
??
SET @RowStart=CharIndex(@StartRoot,@XMLString,0)
SET @JSON=''
WHILE @RowStart>0
BEGIN
????SET @RowStart=@RowStart+Len(@StartRoot)
????SET @RowEnd=CharIndex(@EndRoot,@XMLString,@RowStart)
????SET @Row=SubString(@XMLString,@RowStart,@RowEnd-@RowStart)
????SET @JSON=@JSON+'{'
??
????-- for each row
????SET @FieldStart=CharIndex(@StartField,@Row,0)
????WHILE @FieldStart>0
????BEGIN
????????-- parse node key
????????SET @FieldStart=@FieldStart+Len(@StartField)
????????SET @FieldEnd=CharIndex(@EndField,@Row,@FieldStart)
????????SET @KEY=SubString(@Row,@FieldStart,@FieldEnd-@FieldStart)
????????SET @JSON=@JSON+'"'+@KEY+'":'
????????-- parse node value
????????SET @FieldStart=@FieldEnd+1
????????SET @FieldEnd=CharIndex('</',@Row,@FieldStart)
????????SET @Value=SubString(@Row,@FieldStart,@FieldEnd-@FieldStart)
????????SET @JSON=@JSON+'"'+@Value+'",'
??
????????SET @FieldStart=@FieldStart+Len(@StartField)
????????SET @FieldEnd=CharIndex(@EndField,@Row,@FieldStart)
????????SET @FieldStart=CharIndex(@StartField,@Row,@FieldEnd)
????END???
????IF LEN(@JSON)>0SET @JSON=SubString(@JSON,0,LEN(@JSON))
????SET @JSON=@JSON+'},'
????--/ for each row
??
????SET @RowStart=CharIndex(@StartRoot,@XMLString,@RowEnd)
END
IF LEN(@JSON)>0SET @JSON=SubString(@JSON,0,LEN(@JSON))
SET @JSON='['+@JSON+']'
SELECT @JSON
??
END
GO
執行下面的腳本就能生成JSON格式數據
EXEC[SerializeJSON] 'SELECT * FROM [dbo].[TEST]'
?

轉載于:https://www.cnblogs.com/hank-chen/p/5916929.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457209.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457209.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457209.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JSP+Javabean+Servlet實現用戶注冊

在entity包下新建javabean 也就是實體類User 注意id用 Integer 而不用 int&#xff0c; 因為 int 自動初始化為0 public class User { private Integer id; private String username; private String password; 后面是set和get方法... 在Servlet包下創建servlet 右擊Servlet…

main的方法是Java_Java中的main()方法

在Java中&#xff0c;main()方法是Java應用程序的入口方法&#xff0c;也就是說&#xff0c;程序在運行的時候&#xff0c;第一個執行的方法就是main()方法&#xff0c;這個方法和其他的方法有很大的不同&#xff0c;比如方法的名字必須是main&#xff0c;方法必須是public sta…

深入理解Python的logging模塊:從基礎到高級

在Python編程中&#xff0c;日志記錄是一種重要的調試和錯誤追蹤工具。Python的logging模塊提供了一種靈活的框架&#xff0c;用于發出日志消息&#xff0c;這些消息可以被發送到各種輸出源&#xff0c;如控制臺、文件、HTTP GET/POST位置等。本文將深入探討Python的logging模塊…

http請求連接

1、在Info.plist中添加NSAppTransportSecurity類型Dictionary。2、在NSAppTransportSecurity下添加NSAllowsArbitraryLoads類型Boolean,值設為YES轉載于:https://www.cnblogs.com/liuting-1204/p/5919233.html

數據庫不完全恢復 以及恢復到測試環境:

sample 1: 1.清空歸檔日志 RMAN> crosscheck archivelog all; RMAN> delete achivelog all; 2.清空數據文件。 select name from v$datafile; rm v$datafile 3.恢復數據 ##check file date: ##把db數據恢復到&#xff1a;2017-02-05 00:00:00 ls -lt /ngenprdblog/ ls…

centos7安裝java6_CentOS7.6安裝jdk1.8

2、登錄Linux服務器&#xff0c;通過rz命令將jdk導入服務器如果沒有rz命令 需要先安裝lrzszyum install lrzsz -y3、將jdk壓縮包解壓到指定路徑 -C 指定路徑4、配置環境變量編輯/etc/profile文件 在末尾加上以下內容 wq保存退出source /etc/profile文件 使配置文件生效export J…

ubuntu安裝wkhtmltopdf

下載安裝wkhtmltox系統環境 http://wkhtmltopdf.org/downloads.html wget https://bitbucket.org/wkhtmltopdf/wkhtmltopdf/downloads/wkhtmltox-0.13.0-alpha-7b36694_linux-precise-amd64.deb dpkg -i 安裝包名字 當我把它生成pdf的時候我想讓每個塊都是一頁&#xff0c;經過…

人生苦短,我用python——當我在玩python的時候我玩些什么 -

程序的基本思路 用一個txt文件記錄電腦的一天內累計使用時間累計使用時間超過若干小時就會自動關機程序開機自動運行 為什么我最后選擇了python 想著怎么寫、搜資料的時候就發現Java并不適合&#xff0c;雖然不是不能實現&#xff0c;但有好幾個問題解決起來都有點麻煩。對我這…

IO流的練習5 —— 讀取文件中的字符串,排序后寫入另一文件中

需求&#xff1a;已知s.txt文件中有這樣的一個字符串&#xff1a;“hcexfgijkamdnoqrzstuvwybpl”     請編寫程序讀取數據內容&#xff0c;把數據排序后寫入ss.txt中。分析&#xff1a;   A&#xff1a;讀取文件中的數據   B&#xff1a;把數據存在一個字符串中   C…

java解析未知key json_Gson解析JSON中動態未知字段key的方法

前面一篇文章我介紹了Gson的解析的基本方法。但我們在享受Gson解析的高度封裝帶來的便利時&#xff0c;有時可能會遇到一些特殊情況&#xff0c;比如json數據中的字段key是動態可變的時候&#xff0c;由于Gson是使用靜態注解的方式來設置實體對象的&#xff0c;因此我們很難直接…

Twisted入門教程(5)

2019獨角獸企業重金招聘Python工程師標準>>> 第五部分&#xff1a;由Twited支持的詩歌下載服務客戶端 你可以從這里從頭開始閱讀這個系列 抽象地構建客戶端 在第四部分中&#xff0c;我們構建了第一個使用Twisted的客戶端。它確實能很好地工作&#xff0c;但仍有提高…

Jquery 學習之基礎一

1.添加一個CSS類 $("button").click(function(){ $("#div1").addClass("important blue");}); 2.移除一個類 $("button").click(function(){ $("h1,h2,p").removeClass("blue");}); 3.切換類 $("button&…

**print('人生苦短 我愛Python')**

print(‘人生苦短 我愛Python’) 一、變量 **""" 1.代碼自上而下執行 2_運算符和表達式.一行一句&#xff0c;不要把多個語句寫到一行上&#xff0c;可讀性不好 3中文只能出現在引號里&#xff0c;其他地方不能出現中文 4不能隨意縮進 """**pr…

java線程提高速度_如何在JAVA中減慢線程速度

我有這個類,我在其中運行10次for循環.該類實現了Runnable接口.現在在main()中我創建了2個線程.現在兩個都將循環運行到10.但我想檢查每個線程的循環計數.如果t1超過7,則讓它休眠1秒,以便讓t2完成.但是如何實現這一目標呢&#xff1f;請參閱代碼.我嘗試但看起來完全愚蠢.只是如何…

(轉ORCLE導入導出命令)

oracle數據庫導入導出命令&#xff01;Oracle數據導入導出imp/exp 功能&#xff1a;Oracle數據導入導出imp/exp就相當與oracle數據還原與備份。 大多情況都可以用Oracle數據導入導出完成數據的備份和還原&#xff08;不會造成數據的丟失&#xff09;。 Oracle有個好處&…

筆記本(華碩UL80VT)軟件超頻setFSB

Warning !!!If you are a beginner, do not use this software. This software is for power users only. Use "SetFSB.exe" at your own risk.試了setfsb各種版本&#xff0c;基本不能打開。還有官網的免費版&#xff0c;居然不能用&#xff0c;真是很奇怪。 官網&a…

Day01-python編程基礎

1. 程序 為了完成某種特定功能&#xff0c;以某種程序設計語言編寫的有序指令的集合。程序是指揮cpu工作的“工作手冊”。計算機只能執行二進制代碼&#xff0c;程序設計語言一般類似英文&#xff0c;想要讓計算機理解你寫的程序&#xff0c;必須把程序代碼“翻譯”成計算機能…

pro c 訪問 MySQL_Pro*C??OCI??OCCI??及OCI介紹

Pro*C OCIOCCI 這三種都是C/C訪問數據庫的手段。Pro*C&#xff1a;內嵌SQL,預編譯后把內嵌SQL處理為ORACLE標準運行庫的調用&#xff0c;然后再象編譯一般的C程序一樣進行編譯、連接、運行。1.proc XXX.pc2.gcc/g XXX.c –lclntsh(PRO*C的預編譯&#xff0c;也可直接MAKEFILE…

細說Cookie

http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html轉載于:https://www.cnblogs.com/benpaodexiaopangzi/p/5933230.html

Node.js~在linux上的部署

我們以centOS為例來說說如何部署node.js環境 一 打開centos,然后開始下載node.js包 curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - yum -y install nodejs 二 安裝gcc環境 yum install gcc-c make 安裝完成! 三 安裝nodejs的npm,這是一個包程序工具…