1. 程式人生 > >Mysql儲存過程陣列

Mysql儲存過程陣列

開始

1、建立儲存過程

DROP  PROCEDURE  IF EXISTS array;
DELIMITER $$
CREATE  PROCEDURE `array`(OUT arrayStr VARCHAR(1024))  
 BEGIN  
 SET @array_content="1 2 13 14 5 6 7 8 9 10 11 12";  
 SET @i=1;  
 SET @count = CHAR_LENGTH(@array_content)-CHAR_LENGTH(REPLACE(@array_content,' ','')) + 1; 
 -- 不申明結果為NULL
 SET arrayStr = ''; 
  
 WHILE @i <= @count  
 DO  	
	IF(@i != 1) THEN
		SELECT CONCAT(arrayStr, ',', SUBSTRING_INDEX(SUBSTRING_INDEX(@array_content,' ',@i),' ',-1)) INTO arrayStr;
	ELSE 
		SELECT CONCAT(arrayStr, SUBSTRING_INDEX(SUBSTRING_INDEX(@array_content,' ',@i),' ',-1)) INTO arrayStr;
	END IF;
	SET @
[email protected]
+1; END WHILE; END;

2、呼叫儲存過程

CALL array(@arrayStr);

SELECT @arrayStr;

 執行結果為:

1,2,13,14,5,6,7,8,9,10,11,12

結束

結尾:僅供自己學習,記錄問題和參考,若有帶來誤解和不便請見諒,共勉!

相關推薦

Mysql儲存過程陣列

開始 1、建立儲存過程 DROP PROCEDURE IF EXISTS array; DELIMITER $$ CREATE PROCEDURE `array`(OUT arrayStr VARCHAR(1024)) BEGIN SET @array_

MySql儲存過程,傳陣列引數

專案中遇到批量資料的處理,使用hibernate的出來太慢,修改為儲存過程。 第一版修改為應用迴圈調儲存過程,發現效果不理想。可能是頻繁的開啟session和關閉。 第二版想法為,把所有引數傳入到儲存過程,迴圈引數為一個數組,mysql儲存過程裡沒有split函式, 取

mysql儲存過程引數為陣列或者物件的處理方式

問題場景:做一個物品系統, 需要批量存入。 思考:儲存過程的的引數不支援陣列,是否可以用json字串代替 測試用的JSON字串: let obj = { itemlist:[ { regid:0, iteminfo:

mysql儲存過程以"陣列"形式入參實現表間複製 並實現回滾

這個程式碼是我需要實現,前端稽核某個稽核後,這個資料會在另一個頁面中呈現,涉及到兩個資料庫表。一下內容是用於測試的程式碼。 前端進行處理,將id封裝成陣列後提交到Java後臺,"陣列"使用 - 來分隔,是因為入參時,我使用了逗號,但是測試失敗了,就改用-或空格 在點提交後

Mysql儲存過程8:repeat循環

local cal 其他 host ted query code class pan 語法: repeat SQL until 條件 end repeat; 就是相當於其他語言中的: do{ # }while(); mys

Mysql儲存過程4:mysql變量設置

from 默認 pan procedure weight use mysql變量 sql 寫法 默認全局變量是兩個@@開頭, 可用show variables查看所有默認變量: @@user #declare定義變量只能用在儲存過程中 #declare 變量名 數據類型

Mysql儲存過程3:if語句

sql語句 inpu arguments ted div mysql then for clas --if/else語句 if 條件 then SQL語句 else SQL語句elseifSQL語句 end if; create procedure test1( n

Mysql儲存過程2:變量定義與參數傳遞

變量定義 color ted lec mysq 傳遞 參數傳遞 fault 可選 #儲存過程 中的變量定義 declare 變量名 類型 可選類型 -- 跟建表差不多 create procedure p() begin declare age int de

MySQL 儲存過程-原理、語法、函數詳細說明

exp sql 十六進制 作用範圍 安全機制 系統管理員 rtrim 編程 xtra Mysql儲存過程是一組為了完成特定功能的SQL語句集,經過編譯之後存儲在數據庫中,當需要使用該組SQL語句時用戶只需要通過指定儲存過程的名字並給定參數就可以調用執行它了,簡而言之就是一組

MySQL儲存過程

date 算數運算 else 使用 not 流程控制語句 posit 表達 gin 儲存過程 本文章原創,轉載需註明出處. 前提: 在大型數據庫中 來源: 為了完成特定功能的SQL語句集 定義: 儲存在數據庫中, 用戶通過指定儲存過程的名字並給出參數(帶有參數的)來執

MySQL儲存過程和函式的區別與優缺點

為什麼要使用儲存過程和函式 資料庫物件儲存過程和函式,是用來實現一組關於表操作的SQL語句程式碼當做一個整體來執行。一個完整的操作會包含多條SQL語句,在執行過程中需要根據前面的SQL語句來執行結果有選擇的執行後面的SQL語句。 儲存過程和函式可以簡單的理解為一條或多條SQL語句的集合

spring data jpa 如何呼叫mysql儲存過程

  A:首先定義儲存過程依賴的jpa表:     @Entity     @Table(name="evenmngt_childthingtree_tmp")//資料庫中的表名     @Name

mysql儲存過程迴圈 while/repeat/loop

先把語句結束符設定成// mysql> DELIMITER // while 條件 do … end while mysql> create procedure proce_while() -> begin -> de

mysql儲存過程引數輸入輸出IN/OUT/INOUT

mysql儲存過程中,IN用來輸入引數,OUT用來輸出引數,INOUT輸入和輸出。 IN引數 建立儲存過程 mysql> delimiter // mysql> create procedure proce1(IN count int) ->

mysql 儲存過程示例

在mysql的test庫中執行如下sql: -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREAT

mysql儲存過程舉例:100以內的整數除以2、4、6、8的結果,相加等於多少

學習儲存過程:首先知道它是幹嘛的,  概念:將一組sql語句,完成一個特定的功能,稱之為儲存過程, 寫儲存過程:只能建立、替換、刪除 DROP PROCEDURE IF EXISTS sum; -- procedure 存在則先刪除 create procedure `su

mysql儲存過程遊標檢視select結果集

mysql中使用select(或者使用print未嘗試)檢視引數 DELIMITER $ create PROCEDURE myPro() BEGIN    DECLARE  id varchar(64);   -- id     DE

MySql儲存過程中傳參和不傳參以及java中呼叫程式碼

資料庫表結構 1.mysql不傳參寫儲存過程 create procedure product() -- product為儲存過程名稱 begin select * from book; end 呼叫此儲存過程為 CALL product

MySQL--儲存過程的迴圈語句程式碼筆記--while、repeat和loop

mysql> delimiter $$ mysql> create table testB -> ( -> id int(6) not null -> ) $$ Query OK, 0 rows affected (0.86 sec) mysq

MySQL-儲存過程程式碼筆記-in、out、inout、declare區域性變數和if...else語句

mysql> use test; Database changed mysql> show tables; Empty set (0.00 sec) mysql> use test; Database changed mysql> create table testA