`
nicegege
  • 浏览: 590752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql存储过程:实现一个表复制另一个表的字段

阅读更多

1.存储过程

功能:登录验证

逻辑:

(1)参数说明:

v_name:用户登录名

v_psd:用户密码

v_out:用户不存在或用户密码不正确的是否v_out=1,否则v_out=9

(2)步骤:

a.从用户表user查询用户名为v_name的用户是否存在

存在则进入下一步,否则v_out=1

b.从用户表user查询用户名为v_name的用户的密码pass

判断用户密码和v_psd是否相等,相等时v_out=9否则v_out=1

代码

DELIMITER $$
CREATE PROCEDURE proc_login
(IN v_name VARCHAR(16),
 IN v_psd VARCHAR(8),
 OUT v_out INT)
BEGIN
  DECLARE v_pass VARCHAR(8) ;
  DECLARE v_num INT ;
  SELECT COUNT(*) INTO v_num FROM USER WHERE NAME=v_name;
  IF v_num<>0 THEN
     SELECT pass INTO v_pass FROM USER WHERE NAME=v_name;
     IF v_pass=v_psd THEN
        SET v_out=9;
     ELSE
        SET v_out=1;
     END IF;
  ELSE
     SET v_out=1;
  END IF;
END$$
DELIMITER ;
 

 2.复制第一个表的字段到第二个表上

功能:复制字段

逻辑:

1.用1条sql语句查询出所有不同的字段的信息,并存入游标中

SELECT * FROM information_schema.COLUMNS WHERE table_name = 'sp_usercoupon1' AND table_schema = 'cpdb_dev'  AND COLUMN_NAME NOT IN

 (SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE table_name = 'sp_usercoupon' AND table_schema = 'cpdb_dev');

 

2.遍历游标,游标的每行分别是rowtype类型的变量。rowtype.字段名方式获取字段数据

3.获取cloumn_name,data_type,character_maximum_length拼接alter table语句。

4.执行一次alter table语句。

难点:mysql没有rowtype这样代表正行的数据类型。

 

DELIMITER $$
CREATE PROCEDURE print
(OUT a VARCHAR(50),
 OUT b VARCHAR(50),
 OUT c VARCHAR(50))
BEGIN
    DECLARE _kubauserid1 VARCHAR(50);
    DECLARE _kubauserid2 VARCHAR(50);
    DECLARE _kubauserid3 VARCHAR(50);
    DECLARE flag INT;   
    DECLARE update_cursor CURSOR 
    FOR 
   SELECT column_name,data_type,character_maximum_length FROM information_schema.COLUMNS WHERE table_name = 'sp_usercoupon1' AND table_schema = 'cpdb_dev'  AND COLUMN_NAME NOT IN
 (SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE table_name = 'sp_usercoupon' AND table_schema = 'cpdb_dev');

DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag=1;
    SET flag=0;
    
    OPEN update_cursor;
    REPEAT  /*循环*/
    FETCH update_cursor INTO _kubauserid1,_kubauserid2,_kubauserid3;
        SET a=_kubauserid1;
        SET b=_kubauserid2;
        SET b=_kubauserid3;
        SELECT a,b,c;
    /*update set where*/
    UNTIL flag 
    END REPEAT;
    CLOSE update_cursor ;
    
END$$
DELIMITER ;


CALL print(@a,@b,@c);
SELECT @a,@b,@c;

 总结:没有解决问题,只是把不同的字段信息获取了,用游标遍历的是指单个字段,但是程序能运行并且游标能运行没问题。

 

分享到:
评论

相关推荐

    Mysql User表权限字段说明全介绍

    这是一个高度敏感的权限,需谨慎分配。 7. Reload_priv:赋予用户刷新和重新加载MySQL内部缓存(如权限、主机、查询和表)的能力。 8. Shutdown_priv:持有此权限的用户可以关闭MySQL服务器,通常只给予管理员。 ...

    mysql中将一个表数据批量导入另一表.rar

    本教程主要关注如何在MySQL中将一个表的数据批量导入到另一个表。这通常用于数据备份、数据同步或者在不同的环境之间迁移数据。 首先,你需要确保你拥有源表(原数据所在的表)和目标表(希望导入数据的表)。这两...

    mysql 从一个表中查数据并插入另一个表实现方法

    在数据库管理中,经常需要进行数据迁移或者复制操作,特别是在MySQL这样的关系型数据库中,从一个表中查询数据并插入到另一个表是常见的数据处理任务。本篇文章将详细介绍如何使用SQL语句来实现这一过程。 首先,...

    MySQL复制表结构问题的解决方法

    如果你的数据库不支持`CREATE TABLE AS SELECT`语法,可以先创建一个空表,然后手动定义每个字段: ```sql CREATE TABLE 新表名 ( column1 数据类型, column2 数据类型, ... ); ``` 2. **复制数据**(如果...

    Mysql将一个表中的某一列数据复制到另一个表中某一列里的方法

    mysql复制表中的一列到另一个表中 有时候,我们需要复制某个字段一整列的数据到另外一个新的字段中,这很简单,SQL可以这么写: UPDATE tb_1 SET content_target = content_source; 大概写法如下: Update {your_...

    MySQL实现主从复制

    MySQL主从复制是一种常见的数据库高可用性和负载均衡解决方案,它允许数据从一个主数据库(Master)实时同步到一个或多个从数据库(Slave)。这个过程主要分为三个步骤: 1. **主库记录更改**:在主库上,所有的...

    数据库表复制----------------------

    4. **触发器和存储过程**:如果原表包含触发器或存储过程,这些对象也需要被复制或重新创建,以确保新表的行为与原表一致。 5. **权限和安全性**:复制表的同时,别忘了考虑权限设置。新的表应具有与原始表相同的...

    MySQL复制表结构和内容到另一张表中的SQL语句

    这个命令会创建一个与`旧表`具有相同结构的新表,并将所有数据从`旧表`复制到`新表`。这是最直接且完整的复制方法。 2. **只复制表结构到新表** ```sql CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2; ``` ...

    oracle Mysql相互转化的工具

    压缩包中的“mysql-oracle数据转换工具”很可能是一个实现以上功能的软件,用户可以根据实际需求选择合适的工具进行数据迁移工作。在使用前,应详细了解工具的特性和限制,以确保迁移过程的顺利进行。此外,进行...

    常用MySQL语句大全

    - 插入多条记录:一个`INSERT`语句可以包含多个`VALUES`子句。 - 更新数据:`UPDATE 表名称 SET 字段名1 = 新值1, 字段名2 = 新值2 WHERE 条件;` - 删除数据:`DELETE FROM 表名称 WHERE 条件;`不加条件将删除...

    Mysql的表对象Sql语句转换单表,转换成Oracle创建表sql

    标题提到的"‘Mysql的表对象Sql语句转换单表,转换成Oracle创建表sql’"是一个处理这种转换的工具或过程。 首先,让我们理解这个过程的一般步骤: 1. **数据迁移需求分析**:在开始转换之前,了解源MySQL表的结构...

    Mysql 根据一个表数据更新另一个表的某些字段(sql语句)

    在MySQL数据库管理中,经常需要根据一个表的数据来更新另一个表中的字段,这在数据同步、维护或报表生成等场景中十分常见。本篇文章将详细解释如何使用SQL语句实现这个功能,以及涉及的相关知识点。 首先,我们创建...

    mysql数据库精华.doc

    MySQL是世界上最流行的关系型数据库管理系统之一,用于存储和管理数据。在MySQL中,SQL(Structured Query Language)是用于操作数据库的主要语言。以下是一些关于SQL常用语句的详细解释: 1. **数据记录筛选**: ...

    MySQL 5.6 OCP考试模拟题 解析

    这个查询利用了 INFORMATION_SCHEMA 数据库中的 ROUTINES 表,该表记录了所有存储过程和函数的元数据信息,其中 DEFINER 字段指明了定义存储过程的用户。通过查询这个字段,可以识别出所有Bob定义且未更新的存储过程...

    MySQL数据库:项目创建与维护学生信息管理数据表.pptx

    表可以拥有多个字段,各个字段分别用来存储不同性质的数据,为了加以识别,每个字段必须有一个名称。字段名同样必须符合 MySQL 的命名规则。字段名的规则有:字段名最长可达 64 个字符;字段名可包含中文、英文字母...

    MySQL面试题:从基础到进阶全面解析

    1. MySQL的基本概念:理解MySQL是一个开源、免费的SQL数据库,广泛应用于Web应用。 2. 表结构:了解如何创建表格,包括定义字段、数据类型(如INT、VARCHAR、DATE等)和主键。 3. 数据类型:熟悉每种数据类型的特点...

    mysql一个服务器访问另一个服务器.docx

    在MySQL中,通过Federated存储引擎可以实现一个MySQL服务器(服务器B)访问另一个MySQL服务器(服务器A)的数据表。这种机制允许用户在不复制数据的情况下,直接查询远程数据库中的数据。 **Federated引擎特点**: ...

Global site tag (gtag.js) - Google Analytics