晚上好,这是我的代码示例。执行后我收到语法错误。请帮我解决这个问题。 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 $$
答案 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 - 如前所述,还有其他错误。