我有一个存储过程,它通过从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;
由于