【问题标题】:UNDEFINED Cursor in mySQLmySQL中的未定义游标
【发布时间】:2013-09-15 17:05:32
【问题描述】:

我正在尝试在 mySQL 中创建函数,但收到一条错误消息:UNDEFINED Cursor :REVERSE。

下面是我的代码:

        create function check_data (v_dcrpath VARCHAR(4000)) RETURNS VARCHAR(4000)
 BEGIN
  DECLARE v_dcrpath_value varchar(1000);
  DECLARE REVERSE CURSOR FOR select_statement
   OPEN REVERSE 1..length(v_dcrpath)
      loop
        if substr(v_dcrpath,i,1) = '/' then
           v_dcrpath_value := substr(v_dcrpath, i+1);
           exit;
        end if;
   end loop;

   IF v_dcrpath_value = 'data' then
      return 'true';
   else
      return 'false';
   end if;
fetch  into;
end;
close ;

任何建议

【问题讨论】:

  • 这是要查找路径中最后一个名为 data 的文件夹吗?
  • MySQL 和 PL/SQL 非常不同,因此您需要重写一些逻辑。例如,MySQL 不支持.. 范围运算符。
  • 是的,我正在尝试使用函数获取最后一个文件夹路径,但找不到正确的代码。
  • Like '%/data' 或 like '%/data/%' 怎么样?
  • 它不适用于此示例数据。 /templatedata/composite-item/page/data/3_Local/EU/fr_BE/aqws_dddddd_fr_BE_8004 | | /templatedata/composite-item/page/data/3_Local/EU/fr_BE/Electronics/rvw_fr_BE_12238 | | /templatedata/composite-item/page/data/3_Local/EU/fr_BE/Localtest_fr_BE_12153 | | /templatedata/composite-item/page/data/3_Local/EU/fr_BE/newdcrvalid_fr_BE_12417 | | /templatedata/composite-item/page/data/3_Local/EU/fr_BE/page_load_3_fr_BE_11 | | /templatedata/composite-item/page/data/3_Local/EU/fr_BE/ss1_fr_BE_12051 |

标签: mysql sql stored-procedures


【解决方案1】:

我认为您可能错过了定义光标REVERSE。尝试像这样声明它

DECLARE REVERSE CURSOR FOR select_statement

【讨论】:

  • 现在出现错误 ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的“select_statement OPEN REVERSE 1..length(v_dcrpath) loop if subs”附近使用正确的语法
  • 你能用你正在使用的最新代码更新你的问题吗?
  • 天啊!!! select_statement 表示您希望光标在其上执行的选择语句!!!
  • 哦。看到我对sql中的函数知之甚少。我想执行像 > 我需要创建这样的查询函数类型。如果可能的话,您能否对该函数进行必要的更改。
  • 嗨,您可以发布代码或修改现有的代码,这将适用于我的场景。
猜你喜欢
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多