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做什么?它声明了一个仅在过程内部可见的变量。