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插入新的数据。