1. 程式人生 > >mysql儲存過程中的三種迴圈

mysql儲存過程中的三種迴圈

#loop
drop procedure if exists p1_;
create procedure p1_ ( in in_  int ,  out out_ varchar(3)) #varchar 必須指定長度,傳入引數時只能比3短,不能多
begin 
declare variable_ int(2);
set  variable_ = 10;

looplabel : loop

select variable_, in_ ,out_ from dual;

set variable_ = variable_ - 1;
if variable_ < 6 then
set out_ = 'yy';
leave looplabel;

end if ;
end loop;
end;
 
set @out2 = '';
call p1_(1,@out2);
select @out2 from dual;

#while do
drop procedure if exists p2_ ;
create procedure p2_(in in_2 int, in out_2  varchar(3))
begin 
declare v_ int ;
set v_ = 10 ;
while v_ > 5 do
set v_ = v_ - 1 ;
select in_2 , out_2 ,v_ from dual;
end while ;
end;

set @out_2 = 'KKrr';  
call p2_(10,@out_2);



#repeat
drop procedure  if exists p3 ;

create procedure p3 (in in_3 int , out out_3 varchar(100) )

begin 

declare v3 int  ;

set v3  = in_3 ;

repeat 

select v3 , in_3,  out_3  from dual;

set v3 = v3 - 1;

until v3 < 5 end repeat ;

end;

set @inp = 6 ,@outp = 'MM';

call p3(@inp ,@outp);

# set 和 declare 申明變數的區別 : set 全域性, declare 區域性 且只能在 begin之後出現
DROP PROCEDURE IF EXISTS temp;
CREATE PROCEDURE temp()
 
BEGIN
   
DECLARE a INT DEFAULT 1;
    SET a=a+1;
    SET @
[email protected]
+1; SELECT a,@b; END set @b = 1; #@b字母不區分大小寫 call temp();#執行一次,@b變數就增加1 ,@b相當於全域性變數

相關推薦

MySQL儲存過程迴圈方式

“明月別枝驚鵲,清風半夜鳴蟬” 最近儲存過程寫得多,迴圈多數用在遊標裡,在這裡總結幾種迴圈的方式 CREATE DEFINER=`root`@`localhost` PROCEDURE `NewProc`() BEGIN DECLARE sta

mysql儲存過程迴圈

#loop drop procedure if exists p1_; create procedure p1_ ( in in_ int , out out_ varchar(3)) #varch

MySQL儲存過程的3迴圈,儲存過程的基本語法,ORACLE與MYSQL儲存過程/函式的使用區別,退出儲存過程方法

  學無止境 部落格園   首頁   新隨筆   聯絡   訂閱  管理 隨筆-1968  評論-103  文章-4&

MySQL儲存過程的3迴圈

    -> begin    -> declare i int default 0;    -> loop_label:loop    ->     if i=3 then    ->         set i=i+1;    ->         iterate lo

mysql儲存過程引數型別小解

mysql儲存過程語法: mysql> delimiter //               (分割符) mysql> create procedure 方法名(引數型別引數 引數的資料型別)    -> begin(表示sql語句的開始)    ->

MySQL儲存過程,定義變數有兩方式

MySQL儲存過程中,定義變數有兩種方式: 1.使用set或select直接賦值,變數名以 @ 開頭. 例如:set @var=1; 可以在一個會話的任何地方宣告,作用域是整個會話,稱為會話變數。

oracle迴圈(For、While、Loop)案例

1.ORACLE中的FOR迴圈用法(九九乘法表) 1 declare 2 i int:=0; 3 j int:=0; 4 begin 5 for i in 1..9 loop 6 for j in 1..i loop 7 Dbms_Output.p

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

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

MySQL 儲存過程執行DDL

一、定期增加表分割槽 1、增加表分割槽例 CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `p_create_Partition`(IN databaseName VARCHAR(50),IN tableName VARCHAR(50))L_END:BEGIN&nb

Oracle儲存過程游標For迴圈使用

   procedure copy(a_id int) is     cursor t_cursor is       select * from table f where f.id = a_id;       v_row table%rowtype; begin

MySQL儲存過程declare和set定義變數的區別

  在儲存過程中常看到declare定義的變數和@set定義的變數。簡單的來說,declare定義的類似是區域性變數,@set定義的類似全域性變數。  1、declare定義的變數類似java類中的區域性變數,僅在類中生效。即只在儲存過程中的begin和end之間生效。  2

C語言迴圈的巢狀和比較

1、迴圈的巢狀 一個迴圈體內又包含另一個完整的迴圈結構,稱為迴圈的巢狀。內嵌的迴圈中還可以巢狀迴圈,這就是多層迴圈。各種語言中關於迴圈的巢狀的概念都是一樣的。   C語言中3種迴圈(while迴圈、do…while迴圈和for迴圈)可以互相巢狀。例如,下面幾種都是合法的形式: (1)wh

mysql儲存過程使用select count(*) into 變數名 from +表+ where條件的用法

select count(*) into v_count from dual where userid=2;此語句的意思就是根據where條件查詢dual表,得到的行數存入變數v_count中(給變數賦值) 只能在儲存過程中編寫這樣的語句?如果在mysql的sql語句中編寫

C++迴圈總結

一、迴圈語句     當程式中需要不斷的重複執行某個動作, 例如: 重複輸出1000行"Hello,world!", 如果自己寫一千行cout<<"Hello,world!";, 就算複製貼上也得一會時間, 這時迴圈語句就能派上大用場了。 1. for迴圈   

mysql儲存過程 declare 和 set 定義變數的區別

mysql儲存過程中,定義變數有兩種方式: 1.使用set或select直接賦值,變數名以 @ 開頭. 例如:set @var=1; 可以在一個會話的任何地方宣告,作用域是整個會話,稱為會話變數。 2.以 DECLARE 關鍵字宣告的變數,只能在儲存過程中使用,稱為儲存過

Mysql儲存過程字串分割

今在專案中碰到了要把字串分割,記錄下來,以後可能還用的到 首先想上我的儲存過程程式碼 DELIMITER $$ USE `bplate`$$ DROP PROCEDURE IF EXISTS `lp_plate_insertplateinfo`$$ CREATE DE

mysql 儲存過程limit

1、mysql的高版本(5.5),儲存過程中的limit可以使用變數,如下:select * from student limit iStart,iNum; 2、mysql的低版本(5.1),儲存過程中的limit不能使用變數,編譯報錯,如下:You have an error in your SQL sy

mysql 儲存過程使用多遊標

mysql的儲存過程可以很方便使用遊標來實現一些功能,儲存過程的寫法大致如下: 先建立一張表,插入一些測試資料: DROP TABLE IF EXISTS netingcn_proc_test; CREATE TABLE `netingcn_proc_test`

MySQL儲存過程的IN,OUT,INOUT型別 用法

MySQL儲存過程中有IN,OUT,INOUT型別 ----------------------------------- ## IN IN引數只用來向過程傳遞資訊,為預設值。 ## MySQL儲存過程"in"引數:跟C語言的函式引數的值傳遞類似,MySQL儲存過程內部

MySql儲存過程limit傳參

最近做專案用到了MySql資料庫,感覺還是蠻好用的,但是有同事前幾天寫儲存過程的時候老調不通,我看了看後發現把limit語句後面帶的引數隨便改成一個數字就除錯通過了,不知道是MySql當初就這麼設計的還是一個bug。後來在網上找到一個方法可以通過傳引數的方法解決該問題: