mysql - 使用 MYSQL 创建存储过程时遇到问题

标签 mysql stored-procedures

我是 MQSQL 新手,我一直在使用 MSSQL,所以语法对我来说是具有挑战性的。我收到此错误

#1064 - You have an error in your SQL syntax; ... right syntax to use near 'declare @side LONGTEXT; declare @post BIGINT(20) DEFAULT 0; @side = '7082'; ' at line 3 **

但是该窗口在 select 语句旁边还有一个红色的大 X。 我仔细检查了变量 Meta_Value 的数据类型是 LONGTEXT,post_id 是 BIGINT(20)

DROP PROCEDURE IF EXISTS DailyDishData()

DELIMITER //

CREATE PROCEDURE DailyDishData()

declare @side LONGTEXT;
declare @post BIGINT(20) DEFAULT 0;

@side = '7082';

BEGIN
select @post = post_id from `wp_dfh0payzs9_postmeta` where meta_key = 'ftrecipe_id' and meta_value = @side;
END 

DELIMITER ;

最佳答案

您忘记/放错了过程中的 BEGINEND 关键字

DELIMITER //
DROP PROCEDURE IF EXISTS DailyDishData //

CREATE PROCEDURE DailyDishData()
BEGIN
    declare @side LONGTEXT;
    declare @post BIGINT(20) DEFAULT 0;

    set @side = '7082';

    select @post = post_id
    from `wp_dfh0payzs9_postmeta` 
    where meta_key = 'ftrecipe_id' and meta_value = @side;
END 
//

DELIMITER ;

忽略硬编码数字在过程中没有多大意义并且您似乎没有使用 @post 变量这一事实

关于mysql - 使用 MYSQL 创建存储过程时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44854012/

相关文章:

mysql - 从不同的表中查询交易计数前 X 人的姓名

php - 将月份分成 4 份并检索每天的平均值

php - 使用 PHP 从 SQL 存储过程获取返回值

mysql - 如何知道在存储过程中插入查询是否成功?

mysql - 在表上插入时创建触发器,根据另一个(第三个)表上的行数在另一个表上创建新行

mysql - 如何使用表中不同数量的列来设计数据库

php - 使用 get_user() 对姓氏进行排序时遇到问题

mysql - 在 IN 上多行 MYSQL ,这可能吗?

stored-procedures - 如何在 LotusScript 中接收 DB2 存储过程结果

java - 建议将什么逻辑放入存储过程中?