【问题标题】:Why my sql query not runing as I have set the right DELIMITER为什么我的 sql 查询没有运行,因为我设置了正确的 DELIMITER
【发布时间】:2016-01-07 10:18:08
【问题描述】:
DELIMITER $$
ALTER PROCEDURE GetUContent(IN CurPage INT,IN PageRows INT)
BEGIN 
    DECLARE @rownum INT DEFAULT 0; 
    SELECT  @rownum:=@rownum+1 as T_ROWID,
            tcl.T_ID AS T_CID ,
            tcl.T_CONTENTS , 
            tcl.T_TYPE ,
            tcl.T_STATUS , 
            tcl.T_GOAL , 
            tcl.T_IMGURL AS T_CIMGURL , 
            tcl.T_CREATETIME ,
            tul.T_ID AS T_UID , 
            tul.T_NAME , 
            tul.T_IMGURL AS T_UIMGURL ,
            IFNULL(trl.T_RCOUNT, 0) AS T_RCOUNT 
            FROM  T_CONTENT  tcl LEFT JOIN 
            ( SELECT   T_CID , COUNT(T_ID) AS T_RCOUNT 
              FROM    T_REPLAY  WHERE   T_STATUS = 1  GROUP BY T_CID
            ) trl ON tcl.T_ID = trl.T_CID
             INNER JOIN  T_USERINFO tul ON tcl.T_UID = tul.T_ID
            WHERE     tcl.T_STATUS = 1
     ORDER BY tcl.T_CREATETIME LIMIT PageRows*CurPage,PageRows;
END $$
DELIMITER ;
  • 错误信息: 文件中第 2 行的错误 1064 (42000):'/root/git/Thinking/src/main/resources/dataScript.sql':您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 'CurPage INT,IN PageRows INT 附近使用的正确语法 开始 声明@rownum INT DEFAULT 0; SELECT ' 在第 1 行

必填信息:

  1. 我使用默认的mysql客户端
  2. 运行命令: . /root/git/Thinking/src/main/resources/dataScript.sql
  3. dataScipt.sql的内容为上位编码。

【问题讨论】:

  • 也许这个post可以帮助你

标签: mysql delimiter


【解决方案1】:

我认为你需要使用

DECLARE rownum INT DEFAULT 0; 
SELECT  rownum=rownum+1 as T_ROWID,
...

因为@... 变量是会话变量,不能与DECLARE 一起使用。

编辑

还有ALTER PROCEDURE does not support changing the method body 在 MariaDB 中:

但是,您不能更改存储的参数或主体 使用该语句的程序;要进行此类更改,您必须放弃 并使用 DROP PROCEDURE 和 CREATE PROCEDURE 重新创建过程。

【讨论】:

  • 想你回答我的问题。但问题仍然是当我用你的方式运行我的 sql 时。
  • @user3073477:查看我的编辑。 ALTER PROCEDURE 不能用于改变方法体。
猜你喜欢
  • 1970-01-01
  • 2023-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多