给存储过程传值

当你调用一个存储过程时，你可以使用参数来传值给它，从而使你的存储过程变得非常的灵活。比如，你想修改过程check_philosophers，使之能够检测是否存在某一个哲学家。你可以使用如下的语句进行修改：

CREATE PROCEDURE check_philosophers

(@philosopher VARCHAR(30))

AS

IF EXISTS(SELECT name FROM Philosophers WHERE

name=@philosopher)

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

name=@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”

该语句完成于前一语句完全相同的事情。然而通过使用参数名，你可以使用任何你想要的顺序来传递参数。