【问题标题】:MySQL Cursor with a variable in select statementMySQL游标在select语句中有一个变量
【发布时间】:2016-11-18 12:57:05
【问题描述】:

我在存储过程中有以下代码:



DECLARE done INT DEFAULT FALSE;
declare v_degree int(11);
declare v_start_age smallint(6);
declare v_end_age smallint(6);
declare v_gender varchar(20);
declare v_calctable varchar(200);

SELECT calculationtable into v_calctable FROM wac.degrees where tablename = concat("cdb_" + arg_tablename);

declare cur CURSOR for select degree, start_age, end_age, belt, gender from v_calctable;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

像这样,我将在“将计算表选择到 v_calctable FROM wac.degrees where tablename = concat("cdb_" + arg_tablename);”行中出现语法错误

如果我将它放在“Declare cursor”之后,则没有语法错误,但我需要将结果用于 de Cursor select 语句。

我怎样才能做到这一点?

谢谢。

【问题讨论】:

  • 你可能需要的只是一个 JOIN 而不是一个存储过程

标签: php mysql cursor


【解决方案1】:
CREATE DEFINER=`root`@`localhost` PROCEDURE `my_procedure`()
BEGIN
DECLARE done INT DEFAULT FALSE;
declare v_degree int(11);
declare v_start_age smallint(6);
declare v_end_age smallint(6);
declare v_gender varchar(20);
declare v_calctable varchar(200);

SELECT calculationtable into v_calctable FROM wac.degrees where tablename = concat("cdb_" + arg_tablename);
begin                                                                   -- write here begin keyword
declare cur CURSOR for select degree, start_age, end_age, belt, gender from v_calctable;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
end;                                                                    -- end here inner block

END

当您通过另一个 beginend 关键字使用内部块时 然后它没有同步任务错误。 但是这个过程是否给你正确的结果我不清楚

【讨论】:

    猜你喜欢
    • 2017-12-03
    • 2013-03-12
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    相关资源
    最近更新 更多