GBase 8a
运维管理
问答

是否支持存储过程调用ddl语句

发表于2025-09-08 16:36:49229次浏览34个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】:9.5.3.28.r2_patch.3b9

【操作系统】:Linux 4.19.90-89.v2401.ky10.aarch64

【CPU】:aarch64

【问题描述】*:我写了个存储过程,最终调用alter user username@'%' hosts ‘ip1 ip2 …’语句。报错1295-this command is not supported in the prepared statement protocol yet{statement:call pro_update_ip allowed('admin','192.168.110.101')}

我采用的调用方式是动态sql的方式

评论

登录后才可以发表评论
佛洛伊得发表于 10个月前
都是高手啊
佛洛伊得发表于 10个月前
想知道怎么弄
SxYanna发表于 10个月前
@佛洛伊得:预处理语句不支持执行alter user语句。
佛洛伊得发表于 10个月前
666
佛洛伊得发表于 10个月前
努力学习中
佛洛伊得发表于 10个月前
顶起来
佛洛伊得发表于 10个月前
666
佛洛伊得发表于 10个月前
666
佛洛伊得发表于 10个月前
666
佛洛伊得发表于 10个月前
666
佛洛伊得发表于 10个月前
666
佛洛伊得发表于 10个月前
666
佛洛伊得发表于 10个月前
我又来了
pikaysw发表于 10个月前
8a支持存储过程调用ddl语句。

请排查一下alter user语句权限问题。或列出alter user username@'%' hosts ‘ip1 ip2 …’完整语句协助排查
SxYanna发表于 10个月前
@pikaysw:这是我的存储过程动态sql语句部分。
set @alter_sql = concat('ALTER USER ',p_username,'@\'%\' HOSTS \'',new_hosts,' \';');
select @alter_sql as debug_sql;##这条测试执行sql语句是否正确
PREPARE stmt from @alter_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

现象:最终执行的sql语句成功注入,但仍然报1295错误。
SxYanna发表于 10个月前
@pikaysw:用户为root用户,单独执行alter语句没问题,存储过程调用静态语句执行也没问题。
pikaysw发表于 10个月前
@SxYanna:这是8a的限制。ALTER USER语句不能放到预处理语句里被使用
SxYanna发表于 10个月前
@pikaysw:那有什么比较好的替代方案呢。
pikaysw发表于 10个月前
@SxYanna:可以尝试用python udf进行绕过
tangwei发表于 10个月前
好好好
智慧同学发表于 10个月前
厉害
GBase用户21143发表于 10个月前
顶起来
GBase用户21182发表于 10个月前
支持哟
GBase用户21143发表于 10个月前
支持支持!
GBase用户21182发表于 10个月前
学习一下,这个我不大会。
SxYanna发表于 10个月前
没找到比较好的方法,最后采用python脚本实现想要的功能的。
枫溪发表于 7个月前
12
枫溪发表于 7个月前
3
枫溪发表于 7个月前
4
枫溪发表于 7个月前
21
枫溪发表于 7个月前
4
用户头像
levvel发表于 5个月前
写得真好!
用户头像
柒柒天晴发表于 2个月前
学习下。
爱笑的眼睛发表于 2个月前
看看啦。