【问题标题】:looping through individual result of select operation in mysql stored procedure在mysql存储过程中循环选择操作的单个结果
【发布时间】:2012-10-13 20:12:50
【问题描述】:

我正在尝试学习 mysql 中的存储过程,这可能不是您需要使用 SP 的最佳方案,但它仍然是一个学习过程:)

我有一张桌子,比如table1,带有以下列:

table1_name, table1_location

我还有另一张桌子,比如table2 有以下列

table2_name, table2_location

假设 table1 现在有 5 条记录,并且 table2 是空白的。我想运行一个 SP,并将所有 table1_name 和 table1_location 数据分别输入到 table2_name 和 table2_location 中。

这是我写的mysql代码-

DELIMITER //
CREATE PROCEDURE INS()
BEGIN
SELECT table1_name, table1_location FROM table1;
SET name, location VARCHAR(50);
INSERT INTO table2 VALUES (name, location);
END //
DELIMITER ;

这段代码显然不起作用!我担心的是,既然已经有 5 条记录,那么 table1_name 将是一个具有 5 个值的数组,而 table1_location 也将是一个具有 5 个值的数组,这通常由 SELECT 操作返回。如何获取每个单元格的值,然后进行插入操作?

我对 mysql/SP 还很陌生。请多多包涵 :)

谢谢!

【问题讨论】:

    标签: mysql loops stored-procedures


    【解决方案1】:

    不幸的是你的学习,答案与存储过程无关。

    insert可以取select的结果:

    INSERT into table2
    SELECT name, location
    FROM table1
    

    如果您确实需要在存储过程中遍历行集,请查看cursors

    【讨论】:

    • 就像我说的,我正在尝试通过实践来学习 SP,我知道这不是最好的例子。我想像你建议的光标可能是我正在寻找的东西。我可以知道,如果 SP 内的选择查询返回多行多列,那么游标是遍历每一行列的唯一方法吗?
    • 它们可能是其他一些巫术方式,但光标是正确的方式。祝你好运!
    猜你喜欢
    • 2013-08-05
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多