创建如下存储过程:
create proc [dbo].[sp_withparameter]
@customerid nchar(5),
@rowcount int output
as
set nocount on
set @rowcount = (select count(*) from customers where customerid =@customerid)
使用同样的方法生成存储过程方法,然后使用下面的代码进行测试:
int? rowcount = -1;
ctx.sp_withparameter("", ref rowcount);
Response.Write(rowcount);
ctx.sp_withparameter("ALFKI", ref rowcount);
Response.Write(rowcount);
结果输出了“01”。说明ID 为“”的顾客数为0,而ID 为“ALFKI”的顾客数为1。存储过程
的输出参数被封装成了ref 参数,对于C#语法来说非常合情合理。SQL 代码如下:
EXEC @RETURN_VALUE =[dbo].[sp_withparameter] @customerid = @p0, @rowcount
= @p1 OUTPUT
-- @p0: Input StringFixedLength (Size = 5;Prec = 0; Scale = 0) []
-- @p1: InputOutput Int32 (Size = 0; Prec =0; Scale = 0) [-1]
-- @RETURN_VALUE: Output Int32 (Size = 0;Prec = 0; Scale = 0) []