参数是在存储过程和执行该存储过程的批处理或脚本之间传递数据的对象。SQL Server支持两类参数:输入参数和输出参数。
存储过程可以通过参数来提高其灵活性。在存储过程中参数作为存储过程的第一个语句进行声明,参数可以在被调用存储过程和调用存储过程的对象之间交换数据,存储过程还会向调用程序返回一个整型返回代码。
1.输入参数
存储过程的输入参数是在创建存储过程时定义的,CREATE PROCEDURE语句可以声明多个变量,并且必须声明参数的类型。
存储过程参数和局部变量一样,前面要用@符号,字符长度不得超过30,并且每个存储过程最多可以定义255个参数。参数的类型也可以使用用户自定义类型。如果有多个输入参数,最好为每个参数提供默认值。下面举例说明输入参数的用法。
例2-104 创建一个带参数的存储过程,如图2-133所示。
图2-133 创建一个带参数的存储过程
例2-105 调用一个具有参数的存储过程,如图2-134所示。
2.输出参数
在存储过程中,为了使用输出参数,CREATE PROCEDURE语句和EXECUTE语句中都必须使用OUTPUT关键字,并且在调用该存储过程前必须先声明输出参数。
例2-106 创建一个带输出参数的存储过程,如图2-135所示。
图2-134 调用一个具有参数的存储过程(www.xing528.com)
图2-135 创建一个带输出参数的存储过程
例2-107 调用一个具有输出参数的存储过程,如图2-136所示。
在本例中的第一条执行存储过程的语句中使用了默认值,第二条执行存储过程的语句中使用了指定值。
图2-136 调用一个具有输出参数的存储过程
3.参数的顺序
在执行存储过程时,参数既可以由位置标识,也可以由名称标识。如果以位置传递参数,则执行存储过程时参数的顺序必须与创建时参数的顺序一致。如果以名称传递参数,则参数的顺序是任意的,但要注意,执行时如果一个参数以名称传递,则其他参数也必须以名称传递。采用名称传递参数比较灵活,但采用位置传递参数却具有更快的速度。
前面的例题都是按位置传递参数的,下面来看一个按名称传递参数的实例。
例2-108 调用一个按名称传递参数的存储过程实例,如图2-137所示。
本例中@id在CREATE PROCEDURE语句中是第3个位置,但在EXECUTE语句中调到了第2个位置。
图2-137 按名称传递参数的存储过程的执行
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。