MariaDB语法的一些问题

时间:2016-05-02 16:18:02

标签: mysql sql mariadb

  

晚上好,这是我的代码示例。执行后我收到语法错误。请帮我解决这个问题。   error screenshot

CREATE PROCEDURE `catalog_get_options_in_model`(
  IN inModelId INT,
  IN inShortOptionDescriptionLenght INT,
  IN inOptionsPerPage INT,
  IN inStartItem INT
)      

BEGIN

PREPARE
  `stmt` AS

SELECT
  `option`.opion_id,
  `option`.name,

IF(
    LENGHT(`option`.`description`) <= @p1,
    `option`.`description` CONCAT(
      LEFT(`option`.`description`,
      @p2),
      '...'
    )
  ) 

AS `description`,
  `option`.price,
  `option`.`discounted_price`,
  `option`.`thumbnail`


FROM
  `option`.`option_id`


INNER JOIN
  `option_model`.`option_id` ON `option`.`option_id` = `option_model`.`option_id`


WHERE
  `option_model`.`model_id` = @p3


ORDER BY
  `option`.`display` DESC
LIMIT @p4, @p5


SET
  @p1 = inShortOptionDescriptionLength


SET
  @p2 = inShortOptionDescriptionLength


SET
  @p3 = inModelId


SET
  @p4 = inStartItem


SET
  @p5 = inOptionsPerPage


EXECUTE
  `stmt` USING @p1,
  @p2,
  @p3,
  @p4,
  @p5
END $$

2 个答案:

答案 0 :(得分:0)

IF( LENGHT(option.description) <= @p1

但@ p1尚未定义。

您尝试在查询中使用的所有其他变量也是如此。

我猜您应该使用作为占位符。

http://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html

答案 1 :(得分:0)

拼写:LENGHT - 如前所述,还有其他错误。