MySQL存储过程@语法错误
我希望能够将参数传递给存储过程,因此我搜索了网络,遇到了如下情况:MySQL存储过程@语法错误,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,我希望能够将参数传递给存储过程,因此我搜索了网络,遇到了如下情况: DELIMITER $$ CREATE PROCEDURE addTmpUser @id varchar(10) AS BEGIN //some sql code END$$ DELIMITER ; 问题是,@字符出现语法错误 注意:我使用的是MySQL db。您需要使用IN,OUT,INOUT来指定参数。所以你可以试试这个 DELIMITER $$ CREATE PROCEDURE addTmpUser (IN
DELIMITER $$
CREATE PROCEDURE addTmpUser
@id varchar(10)
AS
BEGIN
//some sql code
END$$
DELIMITER ;
问题是,@
字符出现语法错误
注意:我使用的是MySQL db。您需要使用
IN
,OUT
,INOUT
来指定参数。所以你可以试试这个
DELIMITER $$
CREATE PROCEDURE addTmpUser (IN id VARCHAR(10))
BEGIN
//some sql code
END$$
DELIMITER ;
查看您需要使用
IN
,OUT
,INOUT
来指定参数。所以你可以试试这个
DELIMITER $$
CREATE PROCEDURE addTmpUser (IN id VARCHAR(10))
BEGIN
//some sql code
END$$
DELIMITER ;
看看你正在混合的变量类型。
@variable
是一个用户变量,其作用域适用于整个连接。存储过程中的变量看起来不同,它们前面没有@ 此外,您还需要申报。这里有一个例子
DELIMITER $$
CREATE PROCEDURE addTmpUser(p_id varchar(10))
-- the variable is named p_id as a nameing convention.
-- It is easy for variables to be mixed up with column names otherwise.
BEGIN
DECLARE innerVariable int;
insert into user (id) values (p_id);
-- return all users
select * from user;
END$$
DELIMITER ;
-- and now call it
call addTmpUser(10);
您正在混合变量类型。
@variable
是一个用户变量,其作用域适用于整个连接。存储过程中的变量看起来不同,它们前面没有@ 此外,您还需要申报。这里有一个例子
DELIMITER $$
CREATE PROCEDURE addTmpUser(p_id varchar(10))
-- the variable is named p_id as a nameing convention.
-- It is easy for variables to be mixed up with column names otherwise.
BEGIN
DECLARE innerVariable int;
insert into user (id) values (p_id);
-- return all users
select * from user;
END$$
DELIMITER ;
-- and now call it
call addTmpUser(10);
增加了
代码>和仍然相同的错误添加了代码>还是相同的错误现在我得到了上的错误作为
单词。(意外的为)我该如何称呼它?(执行过程)现在我得到AS
字上的错误。(意外的为)我该如何称呼它?(执行过程)我应该如何调用它?(执行该过程)您可以执行calladdtmpuser(10)代码>这是什么:DECLARE innerviable int
line做什么?它声明了一个只在过程内部看到的变量。我应该如何调用它?(执行该过程)您可以执行calladdtmpuser(10)代码>这是什么:DECLARE innerviable int
line做什么?它声明了一个仅在过程内部可见的变量。