mysql crea un procedimiento almacenado---------[HY000][1418] Esta función no tiene nada de DETERMINISTA, NO SQL

#Debe configurarse; de ​​lo contrario, se informará un error

establecer @@global.log_bin_trust_function_creators = 1;

# Consulta conjunta de cinco tablas y procedimiento almacenado de llamada
seleccione e.empid,e.empname,e.teléfono,e.entertime,e.género,e.edad,
       j.nombredetrabajo,d.nombredep,
       c.cardno,c.gettime,c.outdate,c.cardtype,c.photo,
        c2.comname, cal_addr(c2.addrid,c2.address) dirección de detalle
de los empleados e
trabajos de unión interna j en e.jobid=j.jobid
departamentos de unión interna d en e.depid = d.depid
unión interna a la empresa c2 en d.comid = c2.comid
credenciales de unión izquierda c en e.empid = c.empid;


establecer @@global.log_bin_trust_function_creators = 1;
#Eliminar procedimiento almacenado
soltar función si existe cal_addr;
#Crear procedimiento almacenado
crear función cal_addr(addr int,compaddr varchar(200))
devuelve varchar(300)
comenzar
    declarar cityinfo varchar(50) predeterminado "";
seleccione concat (a1.addrname, a2.addrname, a3.addrname) en cityinfo
desde la dirección a1, dirección a2, dirección a3
donde a3.addrid=addr y a3.subaddr=a2.addrid y a2.subaddr=a1.addrid;
    set cityinfo=concat(cityinfo,compaddr);
    devolver información de la ciudad;
fin;

#Llamar al procedimiento almacenado
seleccione cal_addr(20,'dirección específica');

#mybaits Uno a muchos usando resultMap

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC
        "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kgc.towercrane.tchr.mapper.QueryHrMapper">
    <resultMap id="emp-emp" type="EmpPage">
        <result property="currentPage" column="currentpage"/>
        <result property="rowPage" column="rowPage"/>
          <collection property="datas"
                      column="{c=currentPage,r=rowPage}"
                      ofType="EmployeesVO"
                      select="findEmpByPage"/>
    </resultMap>
    <select id="findEmp" parameterType="EmpPage" resultMap="emp-emp">
        <![CDATA[
        select ceil(count(*)/#{rowPage}) total,#{rowPage} rowPage,#{currentPage} currentPage,
        if(#{currentPage}<ceil(count(*)/#{rowPage}),#{currentPage}+1,#{currentPage}) next,
        if(#{currentPage}=1,#{currentPage},#{currentPage}-1) previous,
        if(#{currentPage}<ceil(count(*)/#{rowPage}),1,0) hasNext,
        if(#{currentPage}=1,0,1) hasPrevious from employees
        ]]>
    </select>

    <select id="findEmpByPage" resultType="EmployeesVO">
            select e.empid,e.empname,e.telephone,e.entertime,e.gender,e.age,
               j.jobname,d.depname,
               c.cardno,c.gettime,c.outdate,c.cardtype,c.photo,
               c2.comname, cal_addr(c2.addrid,c2.address) detailaddr
            from employees e
            inner join  jobs j on e.jobid=j.jobid
            inner join departments d on e.depid = d.depid
            inner join company c2 on d.comid = c2.comid
            left join credentials c on e.empid = c.empid limit ${(c-1)*r},#{r}

    </select>
</mapper>

Supongo que te gusta

Origin blog.csdn.net/just_learing/article/details/126012859
Recomendado
Clasificación