如何将引用值传递给存储过程

时间:2016-10-28 11:24:45

标签: mysql sql

我有一个存储过程,它通过从table2中选择一堆字段来刷新table1。我遇到的问题是,当我运行该过程时,它不会更新table1。 这是过程调用语句:

CALL `dabaseName`.`p_refresh_table1`(<{loc_id VARCHAR(5)}>);

所以如果我这样调用这个程序:

CALL `databaseName`.`p_refresh_table1`('12');

或者像这样:

CALL `databaseName`.`p_refresh_table1`(12);

它不会将结果更新为table1

我找到了这背后的原因所以如果我在这个过程中扩展SQL并手动传递id,我会看到以下内容:

SQL是:

DELETE FROM  table1 where id=loc_id;
INSERT INTO selling table
                (column1,
                 column2,
                 column3,
..
..
.
)
       (SELECT DISTINCT table2.id,
..
..
..
..
);

如果我运行带有替换为'12'(引用)的loc_id的sql,它会按预期工作 但是,如果我使用替换为12 (未加引号)的loc_id运行它,则不会更新table1。 所以我需要知道如何将'12'而不是12传递给loc_id的值。

过程create语句如下所示:

DELIMITER $$
CREATE DEFINER=`userName`@`%` PROCEDURE `p_refresh_table1`(loc_id VARCHAR(5))
BEGIN

  DECLARE EXIT HANDLER FOR SQLEXCEPTION
  BEGIN
ROLLBACK;
      END;

      SET sql_log_off = 1;

      START TRANSACTION;

由于

0 个答案:

没有答案