Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将值(如果存在)传递给另一个插入查询MySQL_Mysql - Fatal编程技术网

将值(如果存在)传递给另一个插入查询MySQL

将值(如果存在)传递给另一个插入查询MySQL,mysql,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 SECUR

我对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 ;
上面的查询将检查插入的作者是否存在于作者表中,如果不存在,它将插入它,如果存在,它将不插入。。。 我的问题是:

如果变量存在,我想得到fname和姓氏 插入到另一个查询中,如果插入到另一个表中,则需要 2个变量如何将其传递到查询? 我是否应该使用authorid(如果存在),然后选择fname和姓氏 那是属于authord的? 我可以声明参数而不是实际值“xxxx”吗?
感谢您的帮助

很快,请尝试以下操作:

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 ;