当前位置: 首页 > 知识库问答 >
问题:

mysql函数中的ibatis和分隔符

富勇军
2023-03-14
delimiter //
drop function if exists true_function //
create function true_function(p_param int) returns int
  deterministic
  sql security invoker
  return true
//

drop function if exists get_next_value//
create function get_next_value(p_name varchar(30)) returns int
  deterministic
  sql security invoker
begin  
  declare current_val integer;

  update mysql.sequences 
    set value = value + 1
    where name = p_name 
      and true_function((@current_val := mysql.sequences.value) is not null);

  return @current_val;
end//
delimiter ;

但ibatis会抛出以下错误:

...执行时出错:delimiter//drop函数if存在get_next_value_test//create函数get_next_value_test(p_name varchar(30))返回int deterministic sql security invoker begin
declare current_val integer。原因:com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception:您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,了解使用“delimiter//”附近的正确语法...

我已经尝试设置allowMultiQueries和send_full_script,但没有成功。你有什么办法执行这个脚本吗?

共有1个答案

魏安宁
2023-03-14

我遇到了同样的问题...

下面的站点似乎为这个问题提供了答案。

https://github.com/mybatis/migrations/issues/49

delimiter //
-- @DELIMITER //
delimiter ;
-- @DELIMITER ;
 类似资料:
  • 问题内容: 我经常看到人们在使用定界符。我试图找出什么是分隔符,以及它们的目的是什么。谷歌搜索20分钟后,我找不到能满足我要求的答案。所以,我现在的问题是:什么是分隔符,何时应使用它们? 问题答案: 在定义函数,存储过程和触发器(其中必须定义多个语句)时,通常使用默认值以外的分隔符 。您可以定义一个不同的定界符,例如,该定界符用于定义整个过程的结尾,但是在其中,每个单独的语句均以终止。这样,当代码

  • 问题内容: 是否可以从“。”更改小数逗号。(点)到MySQL输出中的其他字符(逗号)?我不想使用像这样的函数,我只想使用我通常使用的所有查询,而无需进行任何修改。我正在寻找(一些变量,语言环境等)设置。我试图搜索手册,但没有成功。 问题答案: 不,你不能。这就是SQL标准,而MySQL遵循它(至少在这一点上)。 问题并不是输出的真正问题(如您所提到的,大多数DBMS中都有各种功能),而是输出。如果

  • 问题内容: 已修改。 此代码有什么问题?我得到以下错误。 您的SQL查询中似乎有一个错误。下面的MySQL服务器错误输出(如果有的话)也可以帮助您诊断问题 错误:未知的标点字符串@ 102 STR:|; SQL:如果存在PersonName,则执行DROP功能;#MySQL返回空结果集(即零行)。 DELIMITER |; DELIMITER |; DELIMITER |; DELIMITER |

  • 本文向大家介绍SQL server中字符串逗号分隔函数分享,包括了SQL server中字符串逗号分隔函数分享的使用技巧和注意事项,需要的朋友参考一下 继SQl -Function创建函数数据库输出的结果用逗号隔开,在开发中也有许多以参数的形式传入带逗号字条串参数(数据大时不建议这样做) 例:查找姓名为“张三,李二” 的数据此时在数据库里就要对此参数做处理如图: 函数代码如下 好了,关于sql字符

  • 我想在拆分函数调用中使用空格作为分隔符,但我想在单个单元格数组中输入某些单词;例如。 例如: 在带有一些分隔符的函数拆分调用之后,输出应如下所示: 我需要找到一个分隔符(或正则表达式模式)用于split函数。我如何着手做那件事?

  • 问题内容: 通常,WM_CONCAT是一个聚合函数,它从表中返回用逗号分隔的值,如下所示。 假设我有一个像这样的表: 如果我使用此查询: 结果将是 是否有可能改变分离器()到其他字符,如或的的功能? 还是创建一个可以像这样执行的用户定义函数? 问题答案: 您可能要使用 。 输出: SQLFiddle 更新 如果您需要在列表中获取不同的文本值 SQLFiddle