java_LittleBird
大白是小白
采纳率75%
2017-08-23 02:15 浏览 847

第一次写mysql存储过程,求教,附代码

DELIMITER //
CREATE PROCEDURE insert_pro(uid BIGINT(20),xm VARCHAR(255),bh INT(11))
BEGIN
start TRANSACTION;
SELECT 'id' from zy where id=uid and name=xm and number=bh;
IF 'id' is not null
THEN ROLLBACK;
ELSE
INSERT INTO zy VALUES(uid,xm,bh);
COMMIT;
END IF;
END //
如代码,我想做一个插入前检查的存储过程,即当三个参数都不一样时才能插进去,否则返回。麻烦看一下哪里出错了?if else函数么?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答 默认 最新

  • 已采纳
    java_LittleBird 大白是小白 2017-08-23 06:41

    已解决!
    DELIMITER $$
    CREATE PROCEDURE insert_pro(IN xm VARCHAR(255),IN bh int(11),IN sd int(11))
    BEGIN
    DECLARE $existsFlag int DEFAULT 0;
    SELECT id INTO $existsFlag from zy where name=xm and number=bh and sid=sd;
    IF $existsFlag =0
    THEN
    INSERT INTO zy(name,number,sid) VALUES(xm,bh,sd);
    END IF;
    END $$

    点赞 评论 复制链接分享
  • java_LittleBird 大白是小白 2017-08-23 02:39

    是否应该写一个触发器呢?但是如下
    DELIMITER //
    CREATE TRIGGER insert_t
    BEFORE INSERT ON zy
    BEGIN
    SELECT id from zy where id=uid and name=uname and number=unumber
    IF id is NULL
    THEN INSERT into zy VALUES(uid,uname,unumber);
    COMMIT;
    ELSE ROLLBACK;
    END IF
    END //
    这个参数怎么传递和取出呢?求教了

    点赞 评论 复制链接分享
  • zy841958835 cloudyzhao 2017-08-23 03:11

    SELECT 'id' a from zy where id=uid and name=xm and number=bh;
    IF a is not null
    这么写

    点赞 评论 复制链接分享
  • zy841958835 cloudyzhao 2017-08-23 03:37

    SELECT id a from zy where id=uid and name=xm and number=bh;
    IF a is not null

    点赞 评论 复制链接分享

相关推荐