为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: 8.1
【操作系统】:win11
【CPU】: x64
【需求描述】: 批量执行300个SQL文件(每个文件是一个存储过程/函数)
【技术方案1】: 用disql,但执行脚本后进入SQL命令交互模式,所有SQL文件后还必须加上exit退出交互模式,不满足要求。
【技术方案2】: DM管理工具-查询-执行脚本。把所有要执行的SQL文件,放到查询分析器中执行。
【问题描述】*:DM管理工具-批量执行脚本,大部分执行成功,但部分SQL文件报出错误信息:没有可供执行的SQL语句,详见附件截图。说明1:SQL内容单独贴到查询分析器里,可执行成功。说明2:DM服务器为GB18030字符集,所有SQL文件为UTF-8编码,80%文件执行成功,20%执行失败
【技术解决】:已初步定位问题,是SQL脚本中误用了IF(条件, 结果1, 结果2)函数。在查询分析器里执行此脚本不报错,但用`或start会报错。修改SQL脚本,把IF函数改为case...end,可解决此问题。感谢所有人的热心回复!!
每个SQL文件是个创建存储过程的脚本,脚本最后要不要加/呢?
1.用disql执行时,可以把你所有的SQL文件合并为一个SQL文件,合并方式很简单
2.管理工具报错,看看是不是有啥异常字符集问题,在管理工具中能执行成功,那把这条执行成功的语句替换到你报错的文件中,再执行文件也报错吗
空文件吗?