【问题标题】:SQL Procedures Error #1064 - Something is wrong with SINTAXSQL 过程错误 #1064 - 语法有问题
【发布时间】:2021-03-19 19:25:45
【问题描述】:

我正在尝试创建程序,但我一直收到同样的错误,我不知道为什么,请帮助

DELIMITER //
CREATE PROCEDURE get_login_credentials()
    BEGIN
        SELECT "username", "password", "sim_number", "id_sch" FROM "credential"//
   END
//

#1064 - 第 3 行中 '"credential"' 附近的 SINTAX 有问题

【问题讨论】:

  • Justo 删除所有双引号
  • 如果在过程之外执行查询是否运行
  • @SimonMartinelli 如果我这样做,它就会运行:SELECT username, password, sim_number, id_sch FROM credential;
  • @SimonMartinelli 但我已经尝试使用该 sintax 执行该过程,并且在每个名称之前和之后都不工作是“`”
  • 然后去掉已经建议的双引号

标签: sql mariadb procedure


【解决方案1】:

当您在命令行上创建存储过程时,您仍然必须使用分号作为BEGIN ... END 块内的行终止符。

如前所述,双引号用作字符串常量。如果您真的想转义列名,请使用反引号。

DELIMITER // ;
CREATE PROCEDURE get_login_credentials()
    BEGIN
        SELECT username, password, sim_number, id_sch FROM credential;
   END //
DELIMITER ; //

【讨论】:

    【解决方案2】:

    我使用了这个sintax并且它有效

    CREATE PROCEDURE `test`() NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER SELECT `username`, `password`, `sim_number`, `id_sch` FROM `credential`
    

    【讨论】:

      【解决方案3】:

      创建过程 get_login_credentials 作为 开始 从凭据中选择用户名、密码、sim_number、id_sch 结束

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-16
        • 1970-01-01
        • 2017-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多