0

我希望能够将参数传递给存储过程,所以我在网上搜索并遇到了这样的事情:

DELIMITER $$
CREATE PROCEDURE addTmpUser 
@id varchar(10)
AS
BEGIN
    //some sql code
END$$

DELIMITER ; 

问题是我收到了该@字符的语法错误。

注意:我使用的是 MySQL 数据库。

4

2 回答 2

2

您需要使用IN, OUT,INOUT来指定参数。所以你可以试试这个

DELIMITER $$
CREATE PROCEDURE addTmpUser (IN id VARCHAR(10))
BEGIN
    //some sql code
END$$

DELIMITER ;

文档

于 2013-10-25T19:20:57.847 回答
2

您正在混合变量类型。
@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);
于 2013-10-25T19:28:02.163 回答