找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 11847|回复: 2

MySQL5存储过程的写法

[复制链接]
发表于 2009-11-30 01:32:39 | 显示全部楼层 |阅读模式 IP:江苏扬州
MySQL 5 已经正式推出了,网#y{TpyBM$6F软&支援 Stored Procedures 、 Functions 、 Views 、 Triggers 等。 目前 phpMyAdmin 2.6.4 好像还不支援这些新特色 (View 可以看得到,但是没有建立的介面?) ,不过 MySQL 官方自己推了一个 MySQL Query Browser ,还不错用, 缺点是中文的支援性不佳 (输入中文时会怪怪的) 。

用 MySQL Query Browser 写一个 Stored Procedure :
DELIMITER $$

DROP PROCEDURE IF EXISTS `spTest` $$
CREATE PROCEDURE `spTest`(p_title VARCHAR(200), p_description TEXT)
    DETERMINISTIC
BEGIN
  INSERT INTO category (title, description)
  VALUES (p_title, p_description);
END $$

DELIMITER ;
其中DELIMITER是用来决定SQL分隔符号的,
供A"W+~-HcY网w网育
z[mU教K[9-软'_}y在写Stored Procedure前,要先把预设的分号换掉,不然按下MySQL Query Browser的Execute按钮时,-N中\+P`:$理提yR~会真的去跑里面的 INSERT 指令。写完 Stored Procedure 的 routine_body 后,再回复成预设的分号。 另外我在写这个 Stored Procedurce 时,发现一定要加上 characteristic 才行,也<a class="vLink1" id="vad_0" onmouseover="if(typeof(showTitle)!='undefined'){this.title='';window.clearTimeout(hideTO);showTitle(event, this, 0,'');}" title="BenQ 明基 @Vogate.com" style="font-size: 1em" onclick="" onmouseout="if(typeof(showTitle)!='undefined'){mouseIsOverLayer = false; mouseOverWhileLoad = false; hideTO = window.setTimeout('checkIfMouseOverLayer()',500);}" href="http://action.vogate.com/c/c.php?r=http%3A//www.google.cn/search%3Fcomplete%3D1%26hl%3Dzh-CN%26newwindow%3D1%26q%3Dphpmyadmin%25E5%25AD%2598%25E5%2582%25A8%25E8%25BF%2587%25E7%25A8%258B%26suggest%3D0%26sa%3DX%26oi%3Dcjkrefinements%26ct%3Dresult%26cd%3D1&aid=4972&sid=6235007045035631&click=1&url=http%3A//allyesshafa.allyes.com/main/adfclick%3Fdb%3Dallyesshafa%26bid%3D15328%2C7638%2C387%26cid%3D5181%2C214%2C1%26sid%3D15715%26show%3Dignore%26url%3Dhttp%3A//ad.benq.com.cn/products/dsc/200712&v=0&k=%u5C31%u662F&s=http%3A//www.5inet.net/Database/MySQL/077059.html&rn=171828" target="_blank">就是上面的 DETERMINISTIC 。可是官方手册明明写可略过,这我就没时间研究为什么了。 另外就是参数的名称, MySQL 5 不像 MSSQL 是用 @param 来表示 Stored Procedure 的参数?这样有点难以分辨参数及资料表栏位,不过也不是不能解决。 执行这个 Stored Procedure 的方法是用 CALL: CALL spTest 'TEST', 'ABC'; 当然语法不同,就会造成写 PHP 程式的不方便,
Q,?}!B,络育e^?{|n[件'
f络hhA:zEo)垠eQ改天来找找看有没有比较好的抽象层资料库存取介面 (就是像 PEAR::DB 或 ADOdb 之类的物件类别库) ,
;q$UH供K管qQ#络-$
可以支援不同类型资料库的 Stored Procedure 。

Stored Procedure 的写法可参考:http://dev.mysql.com/doc/refman/5.0/en/stored-procedures.html

Trigger 的写法可参考:http://dev.mysql.com/doc/refman/5.0/en/triggers.html

View 的写法可参考:http://dev.mysql.com/doc/refman/5.0/en/views.html
发表于 2010-2-10 20:05:06 | 显示全部楼层 IP:澳大利亚
偶学习的对像★:魔女在世、希★望
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 21:30 , Processed in 0.319798 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表