我的查询应该在遍历表\u a的游标时检查表\u b中是否存在值。如果表\u b中存在值,则将值返回到变量@yyy中。
当我运行这个存储过程时,我应该得到一个返回col2,col3,col1的值。但它只返回col2,col3。
当我使用 into @yyy
我觉得它没有按它需要的方式工作。不知道是什么问题。你能帮忙吗。
只需移除 into @yyy
我可以得到正确的结果,但是我需要对变量做更多的修改 @yyy
这就是为什么我需要把结果储存在里面。
Delimiter $$
DROP PROCEDURE IF EXISTS sp_test3;
CREATE PROCEDURE sp_test3()
BEGIN
DECLARE DONE INT DEFAULT 0;
DECLARE col1 varchar(255);
DECLARE curA CURSOR FOR SELECT a1 FROM table_a;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = 1;
OPEN curA;
SET @SQL_TXT = '';
while done = 0 do
fetch next from CurA into col1;
if done = 0 then
SET @xxx = CONCAT("select b1 into @yyy from table_b where b1 ='",
col1,"'");
PREPARE stmt_name FROM @xxx;
EXECUTE stmt_name;
DEALLOCATE PREPARE stmt_name;
SELECT @yyy;
END IF;
END WHILE;
close curA;
end
$$
在下面创建表脚本:
create table table_a(a1 varchar(255));
create table table_b(b1 varchar(255));
insert into table_a values('col2');
insert into table_a values('col3');
insert into table_a values('col5');
insert into table_a values('col1');
insert into table_b values('col2');
insert into table_b values('col3');
insert into table_b values('col4');
insert into table_b values('col1');
1条答案
按热度按时间gpfsuwkq1#