香港aa三级久久三级

99久久无码一区人妻 聊聊 MySQL 中的游標

发布日期:2022-05-19 02:50    点击次数:159
什么是游標?

游標(cursor)是一個存儲在MySQL服務器上的數據庫查詢, 它不是一條SELECT語句99久久无码一区人妻,而是被該語句檢索出來的結果集。在存儲了游 標之后,應用样式不错根據需要滾動或瀏覽其中的數據。

破坏:MySQL游標只可用于 存儲過程(和函數)。

創建游標

在創建一個游標前,我們需要先撤消游標的語法

1、定義游標

DECLARE 99久久无码一区人妻游標名稱 CURSOR FOR SQL語句; 

2、打開游標

OPEN 游標名稱; 

3、獲取結果

FETCH 游標名稱 INTO 變量名稱[,變量名稱]; 

4、關閉游標99久久无码一区人妻

CLOSE 游標名稱; 

我們以Customers表來作為示例

示例一

定義一個存儲過程,調用的時候執行内部的游標

CREATE PROCEDURE PROC1() BEGIN     -- 定義兩個存放結果的變量     DECLARE NAME VARCHAR(20);     DECLARE ADDR VARCHAR(50);     -- 聲明游標     DECLARE MY CURSOR FOR SELECT 姓名,地址 FROM customers;     -- 打開游標     OPEN MY;     -- 獲取結果     FETCH MY INTO NAME,ADDR;     -- 這里是為了顯示獲取結果     SELECT NAME,ADDR;     -- 關閉游標     CLOSE MY;     END; 

我們執行完上头的存儲過程后,就不错調用該存儲過程了

CALL PROC1(); 

获得結果:99久久无码一区人妻

這里细则有小伙伴酷爱, 四川老熟女下面又黑又肥customers内外明明有7條記錄,為什么只顯示了1條記錄?

這是因為游標的變量只保留了customers表中的第一瞥數據,要是要放哨背面的數據,就需要循環往下移動游標,智力繼續放哨。

示例二

定義一個存儲過程,香港aa三级久久三级調用存儲過程時,將表customers里的數據循環寫入新的表内部。

CREATE PROCEDURE PROC2() BEGIN     -- 定義兩個存放結果的變量     DECLARE FLAG INT DEFAULT 0;      DECLARE NAME VARCHAR(20);     DECLARE ADDR VARCHAR(50);     -- 聲明游標     DECLARE MY CURSOR FOR SELECT 姓名,地址 FROM customers;      DECLARE CONTINUE HANDLER FOR NOT FOUND SET FLAG=1;     -- 打開游標     OPEN MY;     -- 循環體部分     L1:LOOP     -- 獲取結果     FETCH MY INTO NAME,ADDR;     IF FLAG=1 THEN        LEAVE L1;     END IF;     -- 這里是為了顯示獲取結果     INSERT INTO cus VALUES(NAME,ADDR);     -- 關閉游標     END LOOP;  -- 結束循環     CLOSE MY;     END; 

然后我們執行這個存儲過程,并查詢cus内外的數據

CALL PROC2();  SELECT * FROM cus; 

結果:

結果與customers里的一致,然而這些結果是循環一條一條往下移動的過程中插入的,即這個循環執行了7次。 

以上等于游標的基本操作旨趣了,此外游標的循環體還有WHILE,REPEAT等操作口头,他們的操作口头與LOOP類似,都是用來循環執行循環體内部的內容,直到循環結束。

cURL在我的眼里,就是一个httpClient手办,老伙计们知道怎么获得cURL请求的具体耗时吗? ??