我希望能够将参数传递给存储过程,所以我在网上搜索并遇到类似这样的事情:
DELIMITER $$
CREATE PROCEDURE addTmpUser
@id varchar(10)
AS
BEGIN
//some sql code
END$$
DELIMITER ;
问题是我收到@
字符的语法错误。
注意:我正在使用MySQL db。
答案 0 :(得分:2)
您需要使用IN
,OUT
,INOUT
来指定参数。所以你可以试试这个
DELIMITER $$
CREATE PROCEDURE addTmpUser (IN id VARCHAR(10))
BEGIN
//some sql code
END$$
DELIMITER ;
答案 1 :(得分: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);