mysql - 在 mysql 中创建过程的问题引发错误 1064

标签 mysql

我一直在为我的查询寻找解决方案,我花了一整天都找不到答案,我已经正常测试了我的查询并且它有效,但是当我将我的代码放入一个结构中时创建解决方案的存储过程我总是收到错误代码 1064。

这是我一直试图创建的存储过程,有人可以帮助我吗。

DELIMITER $$

CREATE
    PROCEDURE `ocomon_rc6`.`spGetChamadoMaisAntigo`(IN Sistema VARCHAR(MAX), IN CodigoUrl INT)
    BEGIN

    DROP TABLE IF EXISTS ocomon_rc6.TempChamados;

    CREATE TABLE IF NOT EXISTS ocomon_rc6.TempChamados(numero INT, dias_apos_abertura INT);

    INSERT INTO TempChamados(numero, dias_apos_abertura)
    SELECT 
        o.numero,
        (CASE
            WHEN CONVERT(NOW(), TIME) > CONVERT(o.data_abertura, TIME) THEN DATEDIFF(NOW(), o.data_abertura)
            ELSE DATEDIFF(DATE_SUB(NOW(),INTERVAL 1 DAY), o.data_abertura)
        END CASE) 
    FROM 
        ocorrencias as o 
    LEFT JOIN 
        sistemas AS a ON 
            a.sis_id = o.sistema 
    LEFT JOIN 
        sistemas_x_url AS su ON 
            a.sis_id = su.sis_id 
    LEFT JOIN 
        urls ON 
            su.codigoUrl = urls.codigoUrl 
    LEFT JOIN 
        localizacao AS l ON 
            l.loc_id = o.local 
    LEFT JOIN 
        instituicao AS i ON 
            i.inst_cod = o.instituicao 
    LEFT JOIN 
        usuarios AS u ON 
            u.user_id = o.operador 
    LEFT JOIN 
        usuarios AS ua ON 
            ua.user_id = o.aberto_por 
    LEFT JOIN 
        `status` AS s ON 
            s.stat_id = o.status 
    LEFT JOIN 
        status_categ AS stc ON 
            stc.stc_cod = s.stat_cat 
    LEFT JOIN 
        problemas AS p ON 
            p.prob_id = o.problema 
    LEFT JOIN 
        sla_solucao AS sls ON 
            sls.slas_cod = p.prob_sla 
    LEFT JOIN 
        prioridades AS pr ON 
            pr.prior_cod = l.loc_prior 
    LEFT JOIN 
        sla_solucao AS slr ON 
            slr.slas_cod = pr.prior_sla 
    LEFT JOIN 
        script_solution AS sol ON 
            sol.script_cod = o.oco_script_sol 
    LEFT JOIN 
        prior_atend AS prioridade_atendimento ON 
            prioridade_atendimento.pr_cod = o.oco_prior 
    LEFT JOIN 
        sistemas_x_filtro AS filtr ON 
            filtr.codigoSistemaFiltro = o.filtro 
    WHERE 
        s.stat_painel IN (2) 
    AND o.sistema IN (@Sistema) 
    AND su.codigoUrl = @CodigoUrl
    AND o.oco_scheduled = 0
    ORDER BY 
        o.data_abertura;

    SELECT * FROM TempChamados WHERE dias_apos_abertura = (SELECT MAX(dias_apos_abertura) FROM TempChamados);

    DROP TABLE IF EXISTS ocomon_rc6.TempChamados;

    END$$

DELIMITER ;

这是我收到的错误信息

Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@Sistema VARCHAR(MAX), @CodigoUrl INT)
    BEGIN

    DROP TABLE IF EXISTS ocomon_' at line 2

Execution Time : 00:00:00:000
Transfer Time  : 00:00:00:000
Total Time     : 00:00:00:000

最佳答案

VARCHAR(MAX) 无效。试试 VARCHAR(255)。

关于mysql - 在 mysql 中创建过程的问题引发错误 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16611065/

相关文章:

mysql - 我的 Spark sql 查询或数据帧在哪里执行?

php - 为什么这不更新数据库?

php - 如何插入……值……其中 Value= 等于用户给定的值?复杂查询

mysql - 如何理解TIMESTAMP之间的减号运算符

PHP/MySQL 排序多维数组

php - mysql 选择行号查询

php - 查询结果数组修改

php - 如何通过导航回 php 中的引用页面来限制更新或多次插入?

php - 使用 PHP 将 Excel 数据从特定行和列解析到 MySQL

php - 将MySQL数据放入数组中