存儲過程json
A. sql server存儲過程實現JSON數據解析,然後插入資料庫表求高手指點
兩種方式
1、SQL有個charindex 函數,可以用這個函數配合substr實現 split功能實現循環插入
2、sql 2008以上存儲過程支持表值參數,json反序列化在程序里更方便,所以反序列化之後通過表值參數傳遞
B. oracle如何把一行數據自動拼接成json格式數據
第一步,啟動arccatalog,連接資料庫第二步,創建一個dataset第三步,選擇dataset,然後點擊滑鼠右鍵,選擇導入——要素類(單個),將第一幅cad圖形數據導入資料庫並產生一個Feature Layer第四步,選擇剛剛新產生的Feature Layer,然後點擊滑鼠右鍵,在彈出的快捷菜單中選擇載入(Load)——載入數據(Load Data)第五步,根據載入數據向導進行數據添加。依次完成後,系統自動完成數據地拼接。
C. jstree做動態樹,json格式傳輸,存儲過程獲得datatable之類,不知道如何把datatable轉換為需要的json數據格式
存儲過程獲取,其實都是一樣的。只不過底層的查詢語句變成存儲過程寫的罷了。
數據傳輸用JSON,其實就是KEY和VALUE。把查詢出來的集合、實體、各種結果包裝成MAP類型。可以方便的與JSON進行轉換讀寫。
根據需要自定義實體類,以便前後台的統一調用。這樣的實體類可以與實體表出入很大。完全根據需要制定。
D. 怎麼寫存儲過程
一、整體格式。存儲過程的格式如下:
CREATE PROCEDURE [creator.]"proc_name" ( /* parameters,... */ )
/* RESULT ( column-name,... ) */
BEGIN
;
END
其中creator是用戶名,比如dba;proc_name是你自己起的過程名;後面的參數可有可無,視自己情況定,如果有格式如(a integer,b char(50));再下面的RESULT應該是返回值,這個沒用過不知道怎麼回事!
二、內容。把這些都寫好了可能是這樣:
CREATE PROCEDURE dba.myProcere ( @a integer,@b char(50))
BEGIN
;
END
但是這樣子還是不能編譯的,因為整個過程體是空的,而我學習的結果是過程中至少要有一個SQL語句。所以要這樣寫才不會出錯:
CREATE PROCEDURE dba.myProcere ( a integer,b char(50))
BEGIN
SELECT * FROM MyTable
END
三、語法。
1、分號。在寫的過程中最郁悶的問題是分號!最後發現好像是這樣:
每一句都要加分號,不管是SQl語句還是其它的什麼語句,但是最後保存後最後一句的分號會被自動刪除!(我用的是Sybase的Sybase Central)。
2、定義變數。
格式為Declare @varName integer;(注意有分號!)「@」號好像可有可無!
3、SELECT語句。
格式為:
SELECT Count(*) INTO @varName FROM MyTable WHERE id = @a;
4、if語句。
格式為:
if(varName > 0) then
return
end if;(注意還有分號!)
5、循環語句。
格式為:
loop
……
end loop;(注意分號!)
6、設置變數值。
格式為:
set @varName = 10;
set @varName = @varName2;
7、字元串。
Declare myString char(50);
set @myString = 'Hello!';
要用單引號!
8、定義游標。
格式為:
declare MyCursor dynamic scroll cursor for
select …… from …… where ……;
9、打開、使用和關閉游標。
Open MyCursor;
fetch next MyCursor into ……;
Close MyCursor;
10、調用方法。
string ls_name="test"
DECLARE ProcName1 PROCEDURE FOR ProcName2
@wg_wellid=2,@wg_wgid=1,@wg_stringsid=1,@bha_wellid=2,@bha_name=:ls_name;
execute ProcName1 ;
close ProcName1 ;
其中ProcName1 是調用程序中自定義的過程名,ProcName2是資料庫中存儲過程的名字,下面的傳入的參數。
E. oracle存儲過程解析JSON
Oracle 12.1.0.2版本有一個新功能就是可以存儲、查詢、索引JSON數據格式,而且也實現了使用SQL語句來解析JSON,非常方便。JSON數據在資料庫中以VARCHAR2, CLOB或者BLOB進行存儲。Oracle建議用戶在插入JSON數據之前,使用is_json來驗證輸入JSON數據的正確性。另外,Oracle也提供了相關的函數:
Functions:json_value, json_query, json_table.
Conditions:json_exists, is json, is not json, json_textcontains.
F. 在MySql資料庫中實現一個存儲過程,在這個存儲過程中,需要用游標,動態SQL,詳情點擊查看。。。
DECLAREstuNameVARCHAR(50);
DECLAREflagINT;
DECLAREupdate_cursorCURSOR
FOR
SELECTstu_nameFROMstudentWHEREid=id;
=1;
SETflag=0;
OPENupdate_cursor;
REPEAT/*循環*/
FETCHupdate_cursorINTOstuName;
SETjson=CONCAT(json,',',stuName);
UNTILflag
ENDREPEAT;
CLOSEupdate_cursor;
G. oracle存儲過程怎麼返回json
JSONObject jsonObj=null; jsonObj=JSONObject.fromObject("放你存儲數據的集合或者實體"); 然後你就用PrintWriter 把它返回到jsp頁面就行了...
H. mysql存儲過程處理json格式內容
找MYSQL JSON UDF吧,原生並沒有JSON解碼支持
I. MySQL怎麼寫存儲過程查詢某個表的某一條記錄,並把這條記錄的所有列名對應的值以json格式返回呢
給你個思路吧,既然你能問出這種問題應該是有了思路就會自己做的人,就不幫你寫代碼了。
首先,你確定這個表的所有欄位中沒有二進制內容,如果沒有的話,下面這個思路你可以試試,但是如果有的話估計就需要對二進制進行特別的處理了,如果你有的話再追問吧。
思路開始:
1.如果你是對一張確定的表(提前已經知道表結構)進行這樣的處理,那就查詢出來一條記錄,通過Mysql的字元串拼接函數CONCAT,按照JSON格式,慢慢的拼一個字元串,最後通過select這個字元串返回這個字元串就行了。
2.如果之前你並不知道,這個表的結構,甚至你根本不知道自己要處理的是那張表,那麼存儲過程中你需要傳遞一個表名進來,然後查詢information_schema資料庫中的COLUMNS表,從而獲得這個表的具體欄位信息,以及各個欄位的先後順序(為後面拼接字元串使用),剩下的就跟1中描述的思路一樣了。
雖然不知道你的用處是什麼,不過,以我個人的經驗,這種返回JSON的方式並不可取,這樣會增加資料庫的負擔,理論上應該是將數據出來後自己在程序中拼接。
J. mysql如何截取一個json字元串
代碼如下:
CREATE PROCEDURE sp_str
(
IN p_str VARCHAR(50), /*原始字元串*/
IN p_begin_str VARCHAR(50), /*要匹配的起始字元串*/
IN p_end_str VARCHAR(50)) /*要匹配的結束字元串*/
OUT p_result VARCHAR(50)) /*返回結果*/
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE m_len INT DEFAULT 0;
DECLARE m_index INT DEFAULT 0;
/*計算第一個匹配字元串的索引位置*/
select locate(p_begin_str,p_str)+char_length(p_begin_str) into m_index;
/*計算第一個匹配字元串的長度*/
select locate(p_end_str,p_str,m_index) into m_len;
select SUBSTRING(p_str,m_index,m_len-m_index) INTO p_result ;
END;
執行:
CALL sp_str('[]abcd[12345]aa[]ss','abcd[',']',@result);
返回值 @result 為12345
call sp_str('[]abcd[sdww]aa[]ss','abcd[',']',@result);
返回值 @result 為sdww
如果不用存儲過程,可以直接寫sql語句實現:
代碼如下:
select SUBSTRING(
']abcd[12345]111[]',
locate('abcd[',']abcd[12345]111[]')+CHAR_LENGTH('abcd['),
locate(']',']abcd[12345]111[]',CHAR_LENGTH('abcd['))-
(select locate('abcd[',']abcd[12345]111[]')+CHAR_LENGTH('abcd['))
)
返回值為 12345
關於mysql的函數介紹:
CHAR_LENGTH(str)
返回字元串str的長度。
LOCATE(substr,str)
POSITION(substr IN str)
返回子串substr在字元串str第一個出現的位置,如果substr不是在str裡面,返回0.
mysql> select LOCATE('bar', 'foobarbar');
-> 4
mysql> select LOCATE('xbar', 'foobar');
-> 0
該函數是多位元組可靠的。 LOCATE(substr,str,pos)
返回子串substr在字元串str第一個出現的位置,從位置pos開始。如果substr不是在str裡面,返回0。
mysql> select LOCATE('bar', 'foobarbar',5);
-> 7
這函數是多位元組可靠的。
SUBSTRING(str,pos,len)
SUBSTRING(str FROM pos FOR len)
MID(str,pos,len)
從字元串str返回一個len個字元的子串,從位置pos開始。使用FROM的變種形式是ANSI SQL92語法。
mysql> select SUBSTRING('Quadratically',5,6);
-> 'ratica'
該函數是多位元組可靠的。
SUBSTRING(str,pos)