【发布时间】:2014-12-23 04:54:17
【问题描述】:
我是 MySQL 存储过程的新手。为什么我的存储过程开始...
DROP PROCEDURE IF EXISTS videodb.addVideo;
CREATE PROCEDURE videodb.addVideo(vidTitle VARCHAR(255), vidDescription VARCHAR(500), producerArray VARCHAR(500), actorArray VARCHAR(500), OUT vidSuccess BOOL)
START TRANSACTION;
SET @videoInsertVar = 'INSERT INTO videodb.videos (id, title, description) VALUES(?, ?, ?)';
SET @videoId = NULL;
SET @videoTitle = vidTitle; -- this is line 69
...产生这个奇怪的错误...
ERROR 1054 (42S22) at line 69: Unknown column 'vidTitle' in 'field list'
【问题讨论】:
-
包裹在
BEGIN-END这将使body成为一个单一的语句。见dev.mysql.com/doc/refman/5.7/en/create-procedure.html -
没错。我最初有一个
BEGIN ... END,但我误解了文档。我认为这意味着您应该使用START TRANSACTION代替BEGIN ... END,但现在我明白了:“在所有存储程序(存储过程和函数、触发器和事件)中,解析器将 BEGIN [WORK] 视为BEGIN ... END 块。要在此上下文中开始事务,请改用 START TRANSACTION。" -
@PM77-1 如果您将评论变成答案,我会接受。感谢您的帮助!