`
robinsoncrusoe
  • 浏览: 748813 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

mysql存储过程,函数,触发器例子

阅读更多
1,分割一个用"|||"间隔的字符串的存储过程.

create PROCEDURE  sp_InsertJoKe(lastindex int)
begin
declare i int;
set i=1;
while (i<lastindex) do
begin
  declare a varchar(4000);
  declare p int;
  declare part1 varchar(4000);
  set a='';
  select a=TitleContent  from content where ID=i ;
  set p=position('|||' in a);
  while (p>0) do
   begin
    set part1=mid(a,1,p-1);
    insert MyJoke(Content) values(part1);
    set a=SUBSTRING(a,p+3);
    set p=position('|||' in a);
   end;
  end while;
  insert MyJoke(Content) values(a); 
  set i=i+1;
end;
end while;
end;


2,网上一个存储过程分页的例子.(转自http://www.yiluo.net/?p=35),其中把字符串当语句执行是prepare

CREATE  PROCEDURE ClassList(
IN ID int,
    fldName varchar(100),
    pageSize int,
    pageIndex int,
    orderType int,
    strWhere varchar(2000),
OUT cou int
)
begin
declare beginRow int;
declare sqlStr varchar(1000);
declare limitTemp varchar(1000);
declare orderTemp varchar(1000);
declare v_classp int;
declare oo int;
declare done int default 0;
declare sql1 varchar(500) default ” “;
declare sql2 varchar(200);
declare cur cursor for select shop_classid from shop_class where shop_parentclassid=id;
DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000′ SET done = 1;

set sql2=’select*from shop_class left join shop_main on shop_classid=shop_type_id where’;
select shop_parentclassid into v_classp from shop_class where shop_classid=id;

if(v_classp=0) then
open cur;
  repeat
   fetch cur into oo;
   IF NOT done THEN
    set sql1=concat(’ or shop_classid=’,oo,sql1);
   END IF;
  UNTIL done END REPEAT;
close cur;
set @sql=concat(sql2,substring(sql1,4,length(sql1)-3));
else
set @sql=concat(’select * from shop_main where shop_type_id=’,id);
end if;

set beginRow = (pageIndex-1)*pageSize;
set limitTemp = CONCAT(’ limit ‘,beginRow,’,',pageSize);
set orderTemp = CONCAT(’ order by ‘,fldName);
if orderType = 0 then
  set orderTemp = CONCAT(orderTemp,’ ASC ‘);
else
  set orderTemp = CONCAT(orderTemp,’ DESC ‘);
end if;

set @sqlString = CONCAT(@sql,’ ‘,strWhere,orderTemp,limitTemp);

prepare sqlstmt from @sqlString;
execute sqlstmt;

deallocate prepare sqlstmt;
end



3,创建函数时必须有返回类型.

4,触发器.

语法:

CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name  
FOR EACH ROW   
BEGIN  
trigger_stmt  
END; 

CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name
FOR EACH ROW
BEGIN
trigger_stmt
END;

大写的为关键字
trigger_name:触发器的名字,我常用的命名规则t_name_tableName_(b|a)(i|u|d),t:触发器标识,name:英文名,tableName:表名,b(BEFORE):标识是触发事件之前,a(AFTER):标识触发事件之后,i(insert):标识insert事件,u(update):标识update事件,d(delete):标识delete事件;
trigger_time:触发时间(BEFORE或AFTER)
trigger_event:事件名(insert或update或delete)
tbl_name:表名(必须是永久性表)
trigger_stmt:执行语句(可以是复合语名),使用别名OLD和NEW,能够引用与触发程序相关的表中的列。

例:

create trigger tr_socre after insert on tal_name

for each row

begin

      sql语句

end


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fxloverssh/archive/2008/11/26/3376715.aspx
分享到:
评论

相关推荐

    MySQL触发器、存储过程、自定义函数、视图示例

    #### 二、MySQL存储过程 存储过程是一组预编译的SQL语句,它们可以作为一个单元调用并执行。使用存储过程可以提高代码重用性和执行效率,并且可以封装复杂的逻辑处理。 **示例:** 本例中创建了一个存储过程`sp_...

    MYSQL触发器与存储过程.ppt

    MySQL中的存储过程和触发器是数据库管理中两个重要的高级特性,它们极大地增强了数据库的灵活性和安全性,同时也优化了性能。 **存储过程**是预编译的SQL语句集合,存储在数据库服务器上,可以在需要时被调用执行,...

    MYSQL的存储过程和函数简单写法

    【MySQL存储过程与函数简介】 MySQL的存储过程和函数是数据库管理中强大的工具,它们允许开发者将一组SQL语句组织在一起,形成一个可重用的模块,以执行复杂的业务逻辑。这种概念类似于高级编程语言(如Java)中的...

    基于mysql事务、视图、存储过程、触发器的应用分析

    MySQL数据库在进行复杂数据操作时,常常会用到事务、视图、存储过程和触发器。这些特性使得数据库管理更加高效且安全。下面将详细解释这些概念及其应用。 首先,我们来看MySQL中的事务(Transaction)。事务是...

    MySQL 5.0 存储过程

    MySQL 5.0新增特性中,存储过程是一个重要的部分,本书主要面向对MySQL有一定了解,但希望了解...通过本书的学习,读者能够有效地利用MySQL 5.0提供的存储过程、触发器、视图等新特性,提高数据库操作的效率和安全性。

    mysql触发器.pdf

    - 如果触发器调用的存储过程或函数在定义触发器之后进行了修改,必须重新定义触发器才能使更改生效。 ### 结论 MySQL触发器是数据库管理员和开发者使用数据库时不可或缺的工具之一。它在维护数据完整性和实现复杂...

    MYSQL触发器教程.pdf

    在编写触发器时,你可以使用一系列的编程元素,这些元素与存储过程中的非常相似。比如,你可以使用复合语句(BEGIN/END)、流控制语句(IF, CASE, WHILE, LOOP等)、变量声明(DECLARE)和赋值(SET),甚至处理异常...

    触发器mysql

    触发器是数据库管理系统中一种特殊类型的存储过程,它会在特定的数据库事件(如数据的插入、更新或删除)发生时自动执行。下面将详细解析与触发器在MySQL中的使用相关的知识点。 ### 触发器的概念 触发器是一种由...

    嵌入式mysql编程例子

    嵌入式MySQL编程是将MySQL数据库引擎集成到应用程序中,以实现本地数据存储和处理的高效方式。这对于资源有限的设备或...在实际开发中,结合具体需求,可以进一步探索更多高级特性和用法,如存储过程、触发器、视图等。

    MySQL必知必会 高清晰中文书签版

    这本书对于SQL语言的基础知识、数据库设计、数据查询、表的操作、索引、存储过程、触发器以及数据库安全等方面都有详尽的讲解,旨在帮助读者掌握MySQL的核心技术。 SQL(Structured Query Language)是用于管理和...

    MySQL完全手册(中文)

    7. **视图、存储过程和触发器**:如何创建和使用视图来简化查询,以及存储过程和触发器在数据库编程中的应用。 8. **备份与恢复**:讲解如何备份和恢复数据库,包括全备、增量备和热备策略,确保数据安全。 9. **...

    MySql中 delimiter 详解.docx

    总结来说,`delimiter`命令在MySQL中主要用于编写包含多个语句的复杂结构,如存储过程、函数和触发器。通过改变结束符,我们可以确保MySQL不会在我们希望之前执行语句,从而使多行语句能正确地作为一个整体被解析和...

    mysql cookbook和Perl脚本书籍

    无论是对于数据库的备份与恢复,还是对于存储过程和触发器的使用,本书都提供了详细的步骤说明和案例分析。这使得《MySQL Cookbook》成为那些希望建立、维护和优化MySQL数据库系统的技术人员的宝贵资源。 同时,...

    mysql存储过程之引发存储过程中的错误条件(SIGNAL和RESIGNAL语句)实例分析

    首先,SIGNAL语句的作用是在存储程序(如存储过程、存储函数、触发器或事件)中向调用者报告错误或警告。通过SIGNAL,我们可以指定一个SQLSTATE值或由DECLARE CONDITION声明的条件名称来创建错误。SQLSTATE是一个五...

    MYSQL

    5.4.4 存储过程和触发器 5.4.5 外键(Foreign Keys) 5.4.5.1 不使用外键的理由 5.4.6 视图(Views) 5.4.7 '--'作为一个 注解的开始 5.5 MySQL 遵循什么标准? 5.6 怎样处理没有提交/回卷...

    MySQL_4.1.0 中文参考手册.chm MySQL 4.1.0 中文参考手册

    在存储过程和函数方面,4.1.0版本提供了更丰富的内置函数,如字符串操作函数、日期时间函数等,同时增强了存储过程的功能,使得开发者可以创建更复杂的业务逻辑,提升了代码复用性。此外,这一版本还引入了触发器,...

    MySQL中文参考手册.chm

    5.4.4 存储过程和触发器 5.4.5 外键(Foreign Keys) 5.4.5.1 不使用外键的理由 5.4.6 视图(Views) 5.4.7 '--'作为一个 注解的开始 5.5 MySQL 遵循什么标准? 5.6 怎样处理没有提交...

    MySql.Data.rar_MYSQL_MySql.Data_mysql c_mysql c++_mysql databas

    此外,MySQL还支持视图、触发器、存储过程等功能,使得数据库设计和管理更为灵活。 综上所述,这个"MySql.Data.rar"压缩包为.NET开发者提供了与MySQL数据库交互的工具,通过`MySql.Data.dll`库文件,可以方便地在...

    MySQL中文参考手册

    + 5.4.4 存储过程和触发器 + 5.4.5 外键(Foreign Keys) # 5.4.5.1 不使用外键的理由 + 5.4.6 视图(Views) + 5.4.7 '--'作为一个 注解的开始 o 5.5 MySQL 遵循什么标准? o 5.6 怎样处理没有提交/回卷(COMMIT ...

Global site tag (gtag.js) - Google Analytics