mysql存儲過程代碼
1、delimiter // ,聲明分隔符:DELIMITER是分割符的意思,因為MySQL默認以";"為分隔符,如果我們沒有聲明分割符,那麼編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用DELIMITER關鍵字申明當前段分隔符,這樣MySQL才會將";"當做存儲過程中的代碼,不會執行這些代碼(這里如果不懂的話,你可以通過試錯的方法來理解)。
2、編寫存儲過程的格式:CREATE PROCEDURE([[IN |OUT |INOUT ]參數名數據類形...])
例子:
1)create procere proc1(out s int) // 只有輸出
2)create procere proc2(in p_in bigint) // 只有輸入
3)create procere proc15() // 沒有輸入與輸出
4)create procere demo_multi_param(in id bigint,in name varchar(32),out c int) //多輸入與輸出
3、過程體的開始與結束使用BEGIN與END進行標識。
4、select count (*) into s from student; // 過程體,一系列的邏輯語句,sql語句
5、delimiter ; 用完了之後要把分隔符還原。
② mysql存儲過程中使用游標的實例
復制代碼
代碼如下:
DELIMITER
$$
DROP
PROCEDURE
IF
EXISTS
getUserInfo
$$
CREATE
PROCEDURE
getUserInfo(in
date_day
datetime)
--
--
實例
--
MYSQL存儲過程名為:getUserInfo
--
參數為:date_day日期格式:2008-03-08
--
BEGIN
declare
_userName
varchar(12);
--
用戶名
declare
_chinese
int
;
--
語文
declare
_math
int
;
--
數學
declare
done
int;
--
定義游標
DECLARE
rs_cursor
CURSOR
FOR
SELECT
username,chinese,math
from
userInfo
where
datediff(createDate,
date_day)=0;
DECLARE
CONTINUE
HANDLER
FOR
NOT
FOUND
SET
done=1;
--
獲取昨天的日期
if
date_day
is
null
then
set
date_day
=
date_add(now(),interval
-1
day);
end
if;
open
rs_cursor;
cursor_loop:loop
FETCH
rs_cursor
into
_userName,
_chinese,
_math;
--
取數據
if
done=1
then
leave
cursor_loop;
end
if;
--
更新表
update
infoSum
set
total=_chinese+_math
where
UserName=_userName;
end
loop
cursor_loop;
close
rs_cursor;
END$$
DELIMITER
;
③ 怎麼寫mysql存儲過程,並用php調用它
實現原理
首先,需要知道怎麼寫mysql存儲過程,了解mysq存儲過程語言,
其次,使用mysql工具創建存儲過程。
最後,通過mysql_query()函數執行mysql變數的設置和mysql存儲過程及返回值。
具體代碼如下:
mysql存儲過程代碼
createprocerepro_name(user_idint)
begin
.........
end
2. PHP代碼
$host="localhost";
$user="root";
$password="232412";
$db="user_db";
$dblink=mysql_connect($host,$user,$password)ordie("can'tconnecttomysql");
mysql_select_db($db,$dblink)ordie("can'tselectuser_db");
$user_id=1;
$res=mysql_query("set@a=$user_id",$dblink);
$res=mysql_query("callpro_name(@a)",$dblink);
④ mysql的存儲過程怎麼寫
DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `proc_now_time`$$
CREATE DEFINER=`root`@`%` PROCEDURE `proc_now_time`(OUT `now_time` TEXT)
BEGIN
#Routine body goes here...
DECLARE
now_time TEXT;
select name ,age from test1,test2 INTO now_time;
SELECT now_time;
END$$
DELIMITER ;
⑤ mysql一段存儲過程代碼,一直提示有語法錯誤,高分請教,可以追加分數
CREATEPROCEDUREtest_delete(INi_idINT,OUTo_retINT)
BEGIN
,NOTFOUND,SQLEXCEPTIONseto_ret=0;--後面都沒有異常判斷語句,這句話在存儲中沒有用到
deletefrommemberwheremember_id=i_id;
seto_ret=1;
END;
⑥ php調用mysql存儲過程,如何實現。 我的代碼如下:
mysql存儲過程返回2個資源,第一個是執行信息,第二個是存儲過程返回結果。
mysql_*系列函數無法獲取超過1個資源,需使用mysqli或PDO代替。
PDO:
$stmt=$db->prepare("CALLpro_rb_save(?,?,@return_msg);");
$stmt->bindParam(1,$a);
$stmt->bindParam(2,$b);
$stmt->execute();
$outputArray=$db->query("select@return_msg")->fetch(PDO::FETCH_ASSOC);
var_export($return_msg);
⑦ mysql存儲過程
MySQL存儲過程創建的格式如下:
CREATE PROCEDURE 過程名 ([過程參數[,...]])[特性 ...] 過程體
舉例代碼如下:
CREATE PROCEDURE proc1(OUT s int) BEGIN SELECT COUNT(*) INTO s FROM user; END
存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,這里有一個輸出參數s,類型是int型,如果有多個參數用","分割開。
過程體的開始與結束使用BEGIN與END進行標識。
注意:MySQL在5.0以前並不支持存儲過程
⑧ java調用MySQL存儲過程
java代碼:
Class.forName("com.mysql.jdbc.Driver");
Connectioncon=DriverManager
.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=111111");
Stringsql="{callsel(?)}";
CallableStatementcs=(CallableStatement)con.prepareCall(sql);
cs.execute();
Stringname=cs.getString(1);
System.out.println(name);
創建存儲過程代碼:
dropprocereifexistssel;
createproceresel(outname1varchar(225))
begin
;
end
輸出結果:
⑨ 怎麼在mysql中查詢已建立的存儲過程
1、首先先創建一個存儲過程,代碼如圖,存儲過程主要的功能是為表JingYan插入新的數據。