0 0

mysql的存储过程20

mysql的存储过程:
创建存储过程 create procddure it() select 'hello'; 创建了一个存储过程
call it(); 调用存储过程
就会这点  :
好比我现在向这个里面插入数据或者字段 传出字段 包括条件的查询 while  do  怎么搞  查了网站  不是相互copy 还不如来javaeye 求高——手
教教刚刚开始玩存储过程  最好详细点 跪谢!!拜托啦!

问题补充:
GavinHwa 写道
么了格式,还没样式,还不能修改,只好重新发一次,请不要按刷票处理谢谢!如果管理员看到了情把上面一贴给删除掉,谢谢!


还是直接上存储过程吧

DELIMITER $$ 

USE `DataBaseName`$$   /*数据库名称*/ 

DROP PROCEDURE IF EXISTS `USP_BuddyReject`$$  /*存储过程名字 这里采用先删除在创建的做法MySQL中常用做法*/ 

CREATE DEFINER=`Test`@`%` PROCEDURE `USP_BuddyReject`( 
`v_UserId` INT, 
`v_BuddyId` INT, 
`v_Flag` TINYINT 
) 
BEGIN 
/*好友请求拒绝*/ 

IF EXISTS(SELECT 1 FROM Buddy WHERE UserId=`v_BuddyId` AND BuddyId=`v_UserId`) THEN 

UPDATE Buddy 
SET Flag=`v_Flag` 
WHERE UserId=`v_BuddyId` AND BuddyId=`v_UserId`; 

END IF; 

END$$ 

DELIMITER ; 


相对比较规范的写法吧...

我是在dos下面做的存储过程:
create procddure it() select 'hello'; 创建了一个存储过程
然后就是call 这个存储过程 其他的不知道怎么搞
你给的例子 每次去操作存储过程把原来创建的删除 然后从新创建一样的
我现在就像刚刚学sql样  就会创建表 不知道还有curd的操作 能详细的从创建 到怎么去用 吗 谢谢!!!!!!
2011年10月19日 13:12

6个答案 按时间排序 按投票排序

0 0

看官方文档
http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html
hudingchen (资深程序员) 2011-10-19

2011年10月28日 16:23
0 0

CRUD 这些你可以参考http://w3schools.com/sql/default.asp
中文地址:http://www.w3school.com.cn/sql/index.asp

这里面有基本的CRUD介绍。

2011年10月19日 23:20
0 0

么了格式,还没样式,还不能修改,只好重新发一次,请不要按刷票处理谢谢!如果管理员看到了情把上面一贴给删除掉,谢谢!


还是直接上存储过程吧

DELIMITER $$ 

USE `DataBaseName`$$   /*数据库名称*/ 

DROP PROCEDURE IF EXISTS `USP_BuddyReject`$$  /*存储过程名字 这里采用先删除在创建的做法MySQL中常用做法*/ 

CREATE DEFINER=`Test`@`%` PROCEDURE `USP_BuddyReject`( 
`v_UserId` INT, 
`v_BuddyId` INT, 
`v_Flag` TINYINT 
) 
BEGIN 
/*好友请求拒绝*/ 

IF EXISTS(SELECT 1 FROM Buddy WHERE UserId=`v_BuddyId` AND BuddyId=`v_UserId`) THEN 

UPDATE Buddy 
SET Flag=`v_Flag` 
WHERE UserId=`v_BuddyId` AND BuddyId=`v_UserId`; 

END IF; 

END$$ 

DELIMITER ; 


相对比较规范的写法吧...

2011年10月19日 18:30
0 0

还是直接上存储过程吧


DELIMITER $$

USE `DataBaseName`$$   /*数据库名称*/

DROP PROCEDURE IF EXISTS `USP_BuddyReject`$$  /*存储过程名字 这里采用先删除在创建的做法MySQL中常用做法*/

CREATE DEFINER=`Test`@`%` PROCEDURE `USP_BuddyReject`(
`v_UserId` INT,
`v_BuddyId` INT,
`v_Flag` TINYINT
)
BEGIN
/*好友请求拒绝*/

IF EXISTS(SELECT 1 FROM Buddy WHERE UserId=`v_BuddyId` AND BuddyId=`v_UserId`) THEN

UPDATE Buddy
SET Flag=`v_Flag`
WHERE UserId=`v_BuddyId` AND BuddyId=`v_UserId`;

END IF;

END$$

DELIMITER ;

相对比较规范的写法吧...

2011年10月19日 18:28
0 0

看官方文档
http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html

2011年10月19日 13:36
0 0

你说了这么多,每个词汇都可以写一大片语句。
我给你参考我的例子吧。

drop PROCEDURE  if exists setTopDept;

DELIMITER $$ 
CREATE PROCEDURE setTopDept()
begin
declare d_id tinyint;
declare dptid tinyint;
declare testid tinyint;
declare fetchSeqOk boolean;
declare dept_cur cursor  for select sd0.dept_id from s_department sd0 where sd0.parent_id is not null;
declare continue handler for NOT FOUND set fetchSeqOk = false;
set fetchSeqOk = true; 
open dept_cur;
fetchSeqLoop:Loop 
if fetchSeqOk then 
fetch dept_cur into d_id;
select sd.parent_id into dptid from s_department sd where sd.dept_id=d_id;
while dptid is not null do
  set testid=dptid;  
  select sd.parent_id into dptid from s_department sd where sd.dept_id=testid;     
end while;
 update s_department set topDeptId = testid where dept_id = d_id;   
else
leave fetchSeqLoop;
end if;
end Loop; 
close dept_cur;
update s_department sd set sd.topDeptId = sd.dept_id where sd.parent_id is null;
  end$$
DELIMITER ;




call setTopDept();


简单给你解释下
declare dept_cur cursor  for ……就是定义一个游标名字叫dept_cur。
这个游标了,在下面的loop(循环),给d_id设置值
然后循环赋值,更新等。

自己看吧,你说的范围太大,不明白的再说咯。

2011年10月19日 13:19

相关推荐

Global site tag (gtag.js) - Google Analytics