Mysql存儲過程(Java)


這是我學習mysql存儲過程時關心的幾個點內容,希望能對你們學習存儲過程有所幫助。

語法:

create procedure sp_name ([proc_parameter[,...]])

[characteristic ...]
begin
.......
end

Proc_parameter:存儲過程的參數列表,多個參數彼此間用逗號分隔
      格式[IN|OUT|INOUT] param_name type

  IN(輸入參數)、OUT(輸出參數)、INOUT(輸出參數和輸入);

      Param_name為參數名;

  type為參數的數據類型。

Characteristic:用於描述存儲特征

存儲過程使用邏輯語法:

邏輯判斷:

1、if判斷

  IF expression THEN commands

    [ELSEIF expression THEN commands]

    [ELSE commands]

    END IF; 

2、case判斷

  CASE case_expression

    WHEN when_expression THEN commands

    WHEN when_expression THEN commands

    ELSE commands

    END CASE;

循環判斷:

1、WHILE……DO……END WHILE
2、REPEAT……UNTIL END REPEAT
3、LOOP……END LOOP
4、GOTO

Java對存儲過程操作

1、獲取存儲過程輸出值

--存儲過程SQL
create
procedure tb_pro(out op int) begin set op = 10 end

java操作:

CallableStatement cs = con.prepareCall(sql);
cs.registerOutParameter(1, java.sql.Types.INTEGER);//注冊存儲過程的out型參數類型;使用之前必須注冊;
cs.execute();
System.out.println(cs.getInt(2)); //獲取out的輸出結果

2、獲取查詢結果集(來自select查詢),且有多個結果集如何處理?

-- 存儲過程SQL
create
procedure bach_pro() begin select * from table1; select * from table2; end

java操作:

 CallableStatement cs = con.prepareCall(sql);
 cs.execute();
 ResultSet resultSet = cs.getResultSet();
        
 //遍歷第一個結果集
 while(resultSet.next()){            
     System.out.println(resultSet.getInt(1)); // 輸出結果集
 }
       
 //獲取下一個結果集 
 ResultSet rs2;
 while(cs.getMoreResults()){
      rs2 = cs.getResultSet();
      while (rs2.next()) {
          System.out.println(rs2.getInt(1)); //輸出結果集列
      }
 }

3、當我們要在存儲過程中處理查詢結果集時,我們就需要使用到cursor,下面是cursor一個簡單的使用例子

begin
declare stop int default 0 ;--需要在cursor前聲明參數
declare id_temp int; 
declare cur1 cursor for (select id from xinguan);
declare continue handler for not found set stop = 1; --聲明cursor掃描完后設置值,用於結束循環
open cur1;
cur1_loop:loop
    fetch cur1 into id_temp;  --從cursor中取值賦給變量
    if stop then
        leave cur1_loop;
    end if;
end loop cur1_loop;
close cur1;
end


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM