使用参数在mySql中创建过程

Pet*_*sen 32 mysql parameters procedure

我正在尝试使用mySQL创建存储过程.此过程将验证用户名和密码.我目前正在运行mySQL 5.0.32,所以应该可以创建程序.

这是我用过的代码.我得到的只是一个SQL语法错误.

   GO
    CREATE PROCEDURE checkUser
    (IN @brugernavn varchar(64)),IN @password varchar(64))
    BEGIN
    SELECT COUNT(*)  FROM bruger WHERE bruger.brugernavn=@brugernavn AND bruger.pass=@Password;
    END;
Run Code Online (Sandbox Code Playgroud)

先感谢您

Pet*_*sen 59

我现在明白了.这是正确的答案

CREATE PROCEDURE checkUser 
(
   brugernavn1 varchar(64),
   password varchar(64)
) 
BEGIN 
   SELECT COUNT(*) FROM bruger 
   WHERE bruger.brugernavn=brugernavn1 
   AND bruger.pass=password; 
END; 
Run Code Online (Sandbox Code Playgroud)

@指向mysql中的全局变量.上面的语法是正确的.

  • 删除了我以前的帖子。忘了@指向mysql中的全局变量(我通常在Sql Server中工作,其中@指向普通参数)。如果要检查命令的语法,则始终可以转到[mysql参考手册](http://dev.mysql.com/doc/refman/5.5/en/index.html)。对于CREATE PROCEDURE,这将是[this page](http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html)。 (2认同)

小智 7

(IN @brugernavn varchar(64)**)**,IN @password varchar(64))
Run Code Online (Sandbox Code Playgroud)

问题是 )


Bra*_*esh 6

在Mysql中创建过程非常容易。在这里,在我的示例中,我将创建一个过程,该过程负责根据提供的名称从学生表中获取所有数据。

DELIMITER //
CREATE PROCEDURE getStudentInfo(IN s_name VARCHAR(64))
BEGIN
SELECT * FROM student_database.student s where s.sname = s_name;
END//
DELIMITER;
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,数据库名和表名分别是 student_database 和 student。注意:除了 s_name,您还可以将 @s_name 作为全局变量传递。

如何调用程序?好!它非常简单,只需点击此命令即可调用过程

$mysql> CAll getStudentInfo('pass_required_name');
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明