存儲過程 自我學習

存儲過程

IN,OUT,INOUT三種參數
IN:指定入參,不可返回,
OUT:指定出參,不可返回
INOUT,:調用時被指定,可修改,可返回

無參,無返回值  存儲過程
CREATE PROCEDURE name()
BEGIN
    SELECT * FROM TABLE;
END
有入參存儲過程
CREATE PROCEDURE  name(IN _username VARCHAR(30),IN _AGE INT)
BEGIN
    SELECT * FROM TABLE WHERE USERNAME = _username AND AGE = _age;
END
有入參,有出參 存儲過程
CREATE PROCEDURE name(IN _age INT, OUT _username VARCHAR(30))
BEGIN
    SET _username = (SELECT USERNAME FROM TABLE WHERE AGE = _age);
    SELECT _username;
END

數據庫中執行:
可通過@定義入參.
無參 存儲過程 的執行:
call name();
有入參 存儲過程的執行:
call name(‘張三’,20);
或者
set @username = ‘張三’; –注意定義類型
set @age = 20;
call name(@username.@age);
有出參 存儲過程的執行:
set @age = 20;
set @username = ”;–定義出參類型,賦值隨意.此條可寫可不寫
call (@age,@username);
select @username;

@定義的參數,只有在BENGIN和END之間有效

JAVA代碼中執行
無參存儲過程:
String sql = “call name()”;
其他和普通sql執行一樣.
有入參存儲過程:
String sql = “call name(?,?)”;
其他和普通sql執行一樣.
有出入參存儲過程:
String sql = “call name(?,?)”;
爲佔位符賦值時,出參的賦值在最後.
PS:

CallableStatement call = conn.prepareCall(sql);
call.setInt(1,20);//正常賦值
call.setString(2,Type.String);//指定出參類型
call.execute();
String returnmsg = call.getString(2);//指定位置,此爲返回的username

刪除存儲過程
DROP PROCEDURE ID EXISTS name;
//如果此存儲過程存在,刪除.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章