大家好,
我在做SqlServer向MySql的数据库迁移,其中有一个存储过程pre_Sys_Get_Data,接受业务ID及访问参数,过程中根据业务ID,从业务定义表中,获取对应的过程过程名称,再把这个过程名称和输入的参数拼接一个新的Sql语句,并动态执行,这时,报错:
Error Code: 1444. The prepared statement contains a stored routine call that refers to that same statement. It's not allowed to execute a prepared statement in such a recursive manner
请问有什么办法解决呢,谢谢。
CREATE DEFINER=`sameCityDeliverUser`@`%` PROCEDURE `pre_Sys_Get_Data`(
_menuFunID CHAR(32),
_selectCount BIT,
_treeAutoExpand bit,
_findWhere VARCHAR(2000),
_orderBy VARCHAR(2000)
)
BEGIN
DECLARE _sSql VARCHAR(2000);
DECLARE _iFunType INT;
DECLARE _sExecSql VARCHAR(2000);
declare var_selectCount varchar(5);
declare var_treeAutoExpand varchar(5);
if _selectCount is Null then
set _selectCount=true;
end if;
if _treeAutoExpand is Null then
set _treeAutoExpand=true;
end if;
set var_selectCount='false';
set var_treeAutoExpand='false';
if _selectCount then
set var_selectCount='true';
end if;
if _treeAutoExpand then
set var_treeAutoExpand='true';
end if;
SET _sSql = '';
IF EXISTS (SELECT 1 FROM T_Menu_Get_Data WHERE id = _menuFunID) then
SELECT funSql,
funType into _sSql,_iFunType
FROM T_Menu_Get_Data
WHERE id = _menuFunID;
end if;
IF _iFunType = 1 then
SELECT '不能执行系统查询方法';
elseif _sSql <> '' then
SET _sExecSql = concat(_sSql, '(',var_selectCount,',',var_treeAutoExpand,
',' , IFNULL(_findWhere, '') ,
CASE WHEN IFNULL(_orderBy,'')='' THEN '' ELSE concat(',',_orderBy) END,')');
set @sql = _sExecSql;
PREPARE s1 from @sql;
EXECUTE s1;
deallocate prepare s1;
ELSE
SELECT '没有找到执行的方法';
end if;
END
调用方法:
CALL pre_Sys_Get_Data('6D01977D469047CB9914E5DA9820EF59',0,1,'\' where ifNull(_parentId,\'\'\'\') = \'\'\'\' \'','\' order by sortorder asc\'')
NAT 网关与公网网关都用于私有网络内云主机访问 Internet,但二者存在一些差异:
属性 NAT网关 公网网关
可用性 双机热备,自动热切换 手动切换故障网关
公网带宽 最大5Gbps 取决于云服务器网络带宽
公网IP 最多绑定10个弹性IP 1个弹性IP or 普通公网IP
公网限速 无 取决于云服务器限速
最大连接数 1000w 50w
内网IP 不占用私有网络用户的内网IP 占用子网内IP
安全组 NAT网关不支持绑定安全组,可以对NAT网关后端云服务器绑定安全组 支持
网络ACL NAT网关不支持绑定网络ACL,可以对NAT网关后端云服务器所在子网绑定网络ACL 公网网关不支持绑定网络ACL,可以对公网网关所在子网绑定网络ACL
费用 大陆地区:
小型(最大100w连接数):0.5元 /小时
中型(最大300w连接数):1.5元 / 小时
大型(最大1000w连接数):5元 / 小时 取决于作为公网网关的云服务器规格,以大陆地区为例:
1核2G:0.44元 / 小时
4核8G:1.76元 / 小时
12核24G:5.28元 / 小时