2015-04-03 60 views
0

我有以下查询运行针对MySQL的:传递值是否存在另一个插入查询的MySQL

DELIMITER $$ 

CREATE 
    /*[DEFINER = { user | CURRENT_USER }]*/ 
    PROCEDURE `mybook_store`.`myProc`() 
    /*LANGUAGE SQL 
    | [NOT] DETERMINISTIC 
    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } 
    | SQL SECURITY { DEFINER | INVOKER } 
    | COMMENT 'string'*/ 
    BEGIN 
    DECLARE authId INT DEFAULT 0; 
    DECLARE 
    DECLARE CheckExists INT DEFAULT 0; 
    SET CheckExists = 0; 
    SELECT COUNT(*) INTO CheckExists FROM author WHERE fname = 'xxxx' AND surname='xxxx'; 
     IF (CheckExists > 0) THEN 
     SELECT authorid INTO authId FROM author WHERE fname = 'xxxx' AND surname='xxxx'; 
      ELSE 

      INSERT author(fname, surname) VALUES('xxxx', 'xxxx'); 
      SET authId = LAST_INSERT_ID(); 

     END IF; 


    END$$ 

DELIMITER ; 

如果作者表中存在插入的作者如果不是,如果存在,将它插入上面的查询将检查不会插入... 我的问题:

  1. 我想获得FNAME和姓氏是否存在变量,然后 插入其中插入到另一个表中的另一个查询需要 2个变量如何将它传递给查询?
  2. 我应该使用authorid如果存在然后选择属于authorid的fname和姓氏 ?
  3. 我可以声明参数而不是实际值'xxxx'吗?

感谢你的帮助

回答

0

你靠近,试试这个:

DELIMITER $$ 
CREATE PROCEDURE myProc (IN f_fname VARCHAR(25), IN f_surname VARCHAR(25)) 
BEGIN 
    DECLARE checkExists INT DEFAULT 0; 
    DECLARE authId INT DEFAULT 0; 
    SELECT COUNT(*) INTO checkExists FROM author WHERE fname = f_fname AND surname = f_surname; 
    IF(checkExists > 0) THEN 
    SELECT authorId into authId FROm author WHERE fname = f_fname AND surname = f_surname; 
    ELSE 
    INSERT INTO author(fname, surname) VALUES (f_fname, f_surname); 
    SET authId = LAST_INSERT_ID(); 
    END IF; 
END$$ 
DELIMITER ;