存储过程

本文介绍如何创建及使用SQL Server中的存储过程,包括无参、带参及带返回值的存储过程,并演示了如何在.NET环境中调用这些存储过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

普通存储过程

       首先在查询分析器运行下面的代码来创建一个存储过程:

create proc sp_singleresultset

as

set nocount on

select * from customers 

       然后打开IDE的服务器资源管理器,之前我们从表中拖动表到dbml设计视图,这次我们从存储过程中找到刚才创建的存储过程,然后拖动到设计视图。在方法面板中可以看到已经创建了一个sp_singleresultset的方法,如下图:

 

       然后打开Northwind.designer.cs,可以找到下面的代码:

    [Function(Name="dbo.sp_singleresultset")]

    public ISingleResult<sp_singleresultsetResult> sp_singleresultset()

    {

        IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));

        return ((ISingleResult<sp_singleresultsetResult>)(result.ReturnValue));

    }

     

带参数的存储过程

       创建如下存储过程:

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) []

 

带返回值的存储过程

 

       再来创建第三个存储过程:

create proc [dbo].[sp_withreturnvalue]

@customerid nchar(5)

as

set nocount on

if exists (select 1 from customers where customerid = @customerid)

return 101

else

return 100

       生成方法后,可以通过下面的代码进行测试:

        Response.Write(ctx.sp_withreturnvalue(""));

        Response.Write(ctx.sp_withreturnvalue("ALFKI"));

       运行后程序输出“100101

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值