我正在尝试创建一个存储过程来根据输入变量插入或更新记录。但是当我尝试编译SP时,只需告诉我以下内容:代码1064,您的SQL语法出错,请查看与您的MySQL服务器版本对应的手册,以便在第80行附近使用正确的语法。我还没有找到解决方案。非常感谢你给我的任何帮助。
我的SP代码如下:
DELIMITER $$
CREATE PROCEDURE `sp_sertup`(IN i_operation CHAR(1),
IN i_system VARCHAR(20),
IN i_subsystem VARCHAR(20),
IN i_ref VARCHAR(20),
IN i_significance VARCHAR(20),
IN i_rank VARCHAR(20),
IN i_implication VARCHAR(20),
IN i_loc1 VARCHAR(20),
IN i_loc2 VARCHAR(20),
IN i_task VARCHAR(20),
IN i_time VARCHAR(20),
IN i_cost1 VARCHAR(20),
IN i_cost2 VARCHAR(20),
IN i_note VARCHAR(20),
IN i_attach VARCHAR(20),
IN i_operation_text VARCHAR(20),
IN i_id_setup INT )
BEGIN
IF (i_operation = 'I') THEN
UPDATE setup_gs SET setup_status = 0 WHERE id_setup = id_setup;
INSERT INTO setup_gs(
SystemLabel,
SubsystemLabel,
RefLabel,
SignificanceLabel,
RankLabel,
ImplicationLabel,
Location1Label,
Location2Label,
TaskLabel,
TimeLabel,
Cost1Label,
Cost2Label,
NoteLabel,
attachmentText,
OperationsText,
setup_status
)
VALUES
(
i_system,
i_subsystem,
i_ref,
i_significance,
i_rank,
i_implication,
i_loc1,
i_loc2,
i_task,
i_time,
i_cost1,
i_cost2,
i_note,
i_attach,
i_operation_text,
1);
IF (i_operation = 'U') THEN
UPDATE
setup_gs
SET
SystemLabel = values(i_system),
SubsystemLabel = values(i_subsystem),
RefLabel = values(i_ref),
SignificanceLabel = values(i_significance),
RankLabel = values(i_rank),
ImplicationLabel = values(i_implication),
Location1Label = values(i_loc1),
Location2Label = values(i_loc2),
TaskLabel = values(i_task),
TimeLabel = values(i_time),
Cost1Label = values(i_cost1),
Cost2Label = values(i_cost2),
NoteLabel = values(i_note),
attachmentText = values(i_attach),
OperationsText = values(i_operation_text),
setup_status = 1
WHERE id_setup = i_id_setup;
END $$
DELIMITER ;
答案 0 :(得分:0)
您必须在MySQL中使用END IF
完成IF
-statements。
此外,您的一个测试是在id_setup和id_setup之间。它应该在id_setup和i_id_setup之间。
答案 1 :(得分:-1)
如果要创建更新存储过程,请在mysql命令行中执行以下步骤。这是完美的工作。
create procedure procedure_name(id int, name varchar(40),salary float)
update table_name set name=name,salary=salary from id=id;
首先你需要创建一个表。之后写入关键字create procedure
,然后在过程函数内写procedure_name()
,写下列名。
我在过程中使用了id
,name
,salary
,并在我编写简单查询update table_NAME set name=name, salary=salary where id=id
之后提供了所有类型。因为我想更改此ID的名称和工资。现在你用。