我的 MySQL 遇到问题。就上下文而言,我负责将公司的代码从 Oracle 迁移到 MySQL,并且我在宏变量方面遇到了很多问题:我找到的唯一解决方案是使用 concat,然后准备和执行,但这使我们失去了很多可读性...顺便说一句,如果您在这一点上有更好的选择,请不要犹豫!
话虽如此,一般来说,“连接...准备...执行”指令允许我做任何我想做的事情,除了翻译路径宏时...
当我想在源代码或 tee 中使用这些说明时,我收到错误消息,尽管进行了几周的搜索,但我找不到解决方案。有没有人有解决办法?
我在下面包含了一些代码示例
示例1:
我想要自动化 源//data_file/data_test/test_source_fic_a_import.sql; 当我像这样运行时不用担心,但是当我这样做时:
set @rep_ts := '//data_file/data_test/';
SET @req_test_source := CONCAT("source ", @rep_ts, "test_source_fic_a_import.sql ;");
PREPARE prepa_test_source FROM @req_test_source; EXECUTE prepa_test_source; DEALLOCATE PREPARE prepa_test_source;
我收到以下错误消息:
ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在附近使用的正确语法[...]
示例2:
我跑步的时候也是这样:
tee //data_file/data_test/test_tee.txt;
use basecommune;
select count(*)
from test_squelbyan;
notee
它有效,但是当我尝试时
set @rep_ts := '//data_file/data_test/';
SET @req_test_tee := CONCAT("tee ", @rep_ts, "test_tee.txt;");
PREPARE prepa_test_tee FROM @req_test_tee; EXECUTE prepa_test_tee; DEALLOCATE PREPARE prepa_test_tee;
我明白了:
ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'tee [...] 附近使用的正确语法