在执行存储过程的时候我们经常会使用“内联”以及“隐式”参数,我们知道这个过程是很容易编程的。而且还提供了更为简洁(因而更为快速)的代码。不过,一旦我们使用了两个以上的参数,或者需要使用返回参数来将结果从数据库返回到代码中,那么隐式技术就不那么使用了。这种技术的另一个局限性就是有些数据存储不支持它。为了得到一种更为普通的方法,我们可以显式地为每个存储过程都创建一个参数,并且在执行查询之前给这些参数赋值。
Command对象给出了可以包含多个Parameter对象的Parameters集合。每个Parameter对象都有一系列我们可以访问和设置的属性。当我们调用Command对象中的ExecutePeader、ExecuteNonQuery或者ExecuteScalar方法时,这些参数就会作为命令的一部分被发送到数据存储。
需要注意的是FindFromTitleAndDate存储过程返回一组记录或者行集,其中包括了能够满足匹配两个参数的所有内容。我们所使用的FindFromSBN存储过程返回作为output参数的值,并且只接受单个input参数。故为了得到我们想要的结果,就必须明确地创建我们所需要的参数,并在执行存储过程时把它们提供给存储过程。