新人:mysql存储过程求问

各位老师,由于工作需要,最近学了mysql。这段时间也看了许多有关存储过程的教程和案例。但还是摸不着头脑。这里要请教大家,mysql存储过程具体应该如何实现。(给我个大概得框架就行)
这里需要用manager_id=human_id这个条件,找出符合条件的thuman,就如我图3。
但是接下来还要用新求出来的thuman_id=human_id这个条件循环查询出manager下面的thuman信息。
这个本人认为要用到存储过程循环查询建表和插入。但由于个人技术水平原因,求各位不啬赐教。可以不用具体代码,就大概框架。图片说明图片说明图片说明图片图片图片

3个回答

存储过程只要知道格式了就好弄,我这没有MySql的,给你个SQLserver的你可以参考一下,格式都差不多:

     USE [xxx_vas_top_new]
    GO

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    -- =============================================

    -- 创 建 人: 
    -- 创建时间:    
    -- 功能描述:    
    -- =============================================


    ALTER  PROCEDURE [dbo].[pr_add_sts_ent_user_day_in_amount]
        @year int,          --年
        @day int,           --日期
        @user_id bigint,    --用户ID 
        @amount money,      --
        @bean money         --
    AS

    begin
        IF EXISTS (SELECT 1
               FROM   t_sts_ent_user_day_in_amount WITH(nolock)
               WHERE  year = @year
                      AND day = @day
                      AND uid = @user_id)
      BEGIN
          UPDATE t_sts_ent_user_day_in_amount
          SET    amount = amount + @amount,
                 bean = bean + @bean
          WHERE  year = @year
                 AND day = @day
                 AND uid = @user_id
      END
    ELSE
      BEGIN
          INSERT INTO t_sts_ent_user_day_in_amount
                      (year,
                       day,
                       uid,
                       amount,
                       bean)
          VALUES     (@year,
                      @day,
                      @user_id,
                      @amount,
                      @bean)
      END 

    end

你有没有使用游标,可以在存储过程里面使用游标来实现 我没有使用MySQL,但是我使用的是oracle,其实原理都是差不多的,语法也差不多

free5man
free5man 有想过。但目前还不太懂。是不是类似这样? declare cur1 cursor for select manager_id,manager_name,thuman_id,thuman_name from manager,humanresource where manager_id=human_id
4 年多之前 回复

游标可以使用,,,mysql 通过迭代方式,,进行运行存储

free5man
free5man 请问是使用循环迭代吗? 通过定义变量done,然后定义游标,进入循环过程? begin declare done int default 0; declare cur1 cursor for select manager_id,manager_name,thuman_id,thuman_name from manager,humanresource where manager_id=human_id declare continue handler for not found set done=1; open cur1 下面不会写了,类似于这样?
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐