一个使用insert或update造char型数据的存储过程模板

上一篇 / 下一篇  2012-05-16 21:54:53 / 个人分类:数据库

一、使用insert造数据的模板
  #1、下面这个存储过程适用于原对象相同,需要追加的数据存在数学连续性的情况
   CREATE PROCEDURE `to_char01`()
    BEGIN
      DECLARE i int default 0;
      DECLARE str varchar(20);
      DECLARE p varchar(150);
      #往aa表status列插入1W条记录,格式为1342516XXXX,记录数和连续性可通过改变i的初值和增量实现
      while i<10000 do
        set str=right(concat('0000',i),4);
        set p='13425160000'+str;
        insert into aa(`status`)values(p);
        set i=i+1;
      end while;
     END
   #2、若原对象不同,追加的数据相同,直接用update就搞定
    update aa set `name`=concat(status,`abcdef`);
   #3、若原对象不同,追加的数据不同且具有连续性,使用如下存储过程
    CREATE PROCEDURE `to_char02`()
    BEGIN
      DECLARE i int default 0;
      DECLARE str varchar(20);
      DECLARE p int default 0;
      while i<10000 do
        set p=i+1;
        set str=right(concat('0000',i),4);
        #由于使用的是updata语句,所以需要指定行,通过id来确定,而且最好id的变化规律和i的变化规律一致
        update aa set `add`=concat(status,str) where id=p;
        set i=i+1;
      end while;
    END
 
###以上sql均在mysql下正常运行,其他数据库自己改下语法就好了,变化不大
 
二、使用updatetext进行数据追加,适用于追加的数据相同的情况下
   #下面这个例子是SQL SERVER下的,貌似mysql不支持updatetext,先记下,有空拿sql server演练下
    CREATE PROCEDURE [dbo].[UpdateCustomerBBS]
      @UserCode char(10),
      @add_str varchar(8000) 
       AS
      #先定义一个二进制型变量@ptrval
      declare @ptrval binary(16)
      #获得目标列的指针,并赋给变量@ptrval
      select @ptrval=textptr(theBBS)
      from table_name as pr wherepr.UserCode=@UserCode
      #利用updatetext追加字符串,格式如下
      updatetext  table_name.theBBS @ptrval 0 0 @add_str
       GO
 
     附update语法如下:
       第一个参数是指定哪个表的哪个字段
       第二个参数是@ptrval是指向原来字段的指针
       第三个参数是从哪里开始追加,0为在追加到老数据之前,NULL表示追加到老数据之后
       第四个参数是询问是否删除老数据的字符数,0表示不删除(就是追加),NULL表示删除所有老数据
       第五个参数其实就是追加的内容而已,一般为固定字符串,比如“abcd”等等
    

TAG:

 

评分:0

我来说两句

Open Toolbar