给存储过程传值
当你调用一个存储过程时,你可以使用参数来传值给它,从而使你的存储过程变得非常的灵活。比如,你想修改过程check_philosophers,使之能够检测是否存在某一个哲学家。你可以使用如下的语句进行修改:
CREATE PROCEDURE check_philosophers
(@philosopher VARCHAR(30))
AS
IF EXISTS(SELECT name FROM Philosophers WHERE )
PRINT “A philosopher”
ELSE
PRINT “Not a philisopher”
当该过程执行时,它检查传递给变量@philosopher的姓名是否存在于表Philosophers中。假如@philosopher的值存在于表中,打印文本“A philosopher”,否则打印文本“Not a philisopher”
当你在存储过程中包含参数时,你把它们列在CREATE PROCEDURE语句的后面的括号内,但必须在关键词AS之前。对于每一个参数,你都必须指明数据类型。在一个单独的过程中,你最多能设置255个参数。比如下面的过程检查是否在传递的姓名当中,至少有一个是哲学家的姓名:
CREATE PROCEDURE check_philosophers
(@firstname VARCHAR(30),@secondname VARCHAR(30))
AS
IF EXISTS(SELECT name FROM Philosophers
WHERE firstname OR name=@secondname)
PRINT “At least one of them is a philosopher”
ELSE
PRINT “Neither one of them is a philisopher”
为了执行一个具有一个或多个参数的存储过程,你只需简单地在存储过程名称的后面列出参数的值。比如下面的语句检查Plato和Aristotle中是否至少有一个是哲学家:
EXECUTE check_philisophers “Plato”,”Aristotle”
假如一个存储过程具有多个参数。你必须以正确的顺序来传值。有时候这并不是很方便。你可以使用另一种方法,通过名称来传递参数,如下所示:
EXECUTE check_philisophers @firstname=“Plato”, @secondname=”Aristotle”
该语句完成于前一语句完全相同的事情。然而通过使用参数名,你可以使用任何你想要的顺序来传递参数。