* IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。
CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity]
(
@NewsTitle varchar(200),
@NewsContent varchar(4000),
@Creator varchar(50),
@LastNewsId int output,
@DepartId int
)
AS
BEGIN
SET NOCOUNT ON; insert into tbNewsAffiche(Title,Content,Creator,CreateTime,Updator,UpdateTime,DepartId)
values(@NewsTitle,@NewsContent,@Creator,getdate(),@Creator,getdate(),@DepartId) set @LastNewsId = IDENT_CURRENT('tbNewsAffiche')
END

存储过程方法体内定义及赋值:

declare @recordCount int
set @recordCount=0

SqlServer存储过程使用out传递出参数

====================================

增加:

存储过程

USE [testdb]
GO
/****** 对象: StoredProcedure [dbo].[PR_QueueNewsAffiche_AddQueueNews] 脚本日期: 11/01/2013 15:40:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO CREATE proc [dbo].[PR_QueueNewsAffiche_AddQueueNews](@Content nvarchar(500),@NewsAfficheId int,@BeginTime datetime,@EndTime datetime,@Creator varchar(50),@CreateTime datetime,@Updator varchar(50),@UpdateTime datetime)
as
insert into tbQueueNewsAffiche([Content],NewsAfficheId,BeginTime,EndTime,Creator,CreateTime,Updator,UpdateTime) values(@Content,@NewsAfficheId,@BeginTime,@EndTime,@Creator,getdate(),@Updator,getdate());

对应DAL层后台代码:

/// <summary>
/// 添加
/// </summary>
/// <param name="newsInfo"></param>
/// <returns></returns>
public int Add(QueueNewsAffiche_NewsInfo newsInfo)
{
IDataParameter[] paramArray = new IDataParameter[]{
Db.GetParameter("@Content",DbType.String,newsInfo.Content),
Db.GetParameter("@NewsAfficheId",DbType.Int32,newsInfo.NewsAfficheId),
Db.GetParameter("@BeginTime",DbType.DateTime,newsInfo.BeginTime),
Db.GetParameter("@EndTime",DbType.DateTime,newsInfo.EndTime),
Db.GetParameter("@Creator",DbType.String,newsInfo.Creator),
Db.GetParameter("@CreateTime",DbType.DateTime,newsInfo.CreateTime),
Db.GetParameter("@Updator",DbType.String,newsInfo.Updator),
Db.GetParameter("@UpdateTime",DbType.DateTime,newsInfo.UpdateTime)
};
int returnValue = ;
try
{
returnValue = Db.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure, "PR_QueueNewsAffiche_AddQueueNews", paramArray);
}
catch (System.Exception e)
{
LogHelper.Error("添加时出错" + e.ToString());
}
return returnValue;
}

=======================================

删除:

存储过程

USE [testdb]
GO
/****** 对象: StoredProcedure [dbo].[PR_QueueNewsAffiche_Delete] 脚本日期: 11/01/2013 15:46:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO CREATE PROCEDURE [dbo].[PR_QueueNewsAffiche_Delete](@Id int,@Result int output) //@Result为输出
AS
BEGIN
IF EXISTS(SELECT 1 FROM tbQueueNewsAffiche //判断是否有数据SELECT top 1 FROM tbQueueNewsAffiche WHERE Id = @Id 不存在用not exists
WHERE Id = @Id)
BEGIN
DELETE FROM tbQueueNewsAffiche
WHERE Id = @Id
set @Result=1;
END
else
begin
set @Result =0;
end
END

对应DAL层代码:

        /// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public int DeleteById(int id)
{
IDataParameter[] paramArray = new IDataParameter[]{
Db.GetParameter("@Result",DbType.Int32,ParameterDirection.Output), //输出参数
Db.GetParameter("@Id",DbType.Int32,id)
};
try
{
int effectedRows = Db.ExecuteSPNonQuery(ConnectionString, "PR_QueueNewsAffiche_Delete", paramArray);
int result = Field.GetOutPutParam(paramArray[], );
return result;
}
catch (System.Exception ex)
{
Log.WriteUserLog("删除失败" + ex.ToString(), , , );
return ;
}
}

================================

修改:

存储过程:

USE [testdb]
GO
/****** 对象: StoredProcedure [dbo].[PR_QueueNewsAffiche_Update] 脚本日期: 11/04/2013 10:54:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO CREATE PROCEDURE [dbo].[PR_QueueNewsAffiche_Update]
(
@Id int,
@Content nvarchar(500),
@BeginTime datetime,
@EndTime datetime,
@Updator varchar(50)
)
AS
BEGIN
SET NOCOUNT ON; 这一句要注意:作用是不返回受影响的行数,一般做更新的不要设置,方便获取到返回的行数来判断是否更新成功。 update tbQueueNewsAffiche
set
[Content]=@Content,
BeginTime=@BeginTime,
EndTime=@EndTime,
Updator=@Updator,
UpdateTime=getdate()
where Id=@Id END

对应DAL层代码:

        /// <summary>
/// 更新
/// </summary>
/// <param name="id">排队新闻id</param>
/// <param name="content"></param>
/// <param name="beginTime"></param>
/// <param name="endTime"></param>
/// <param name="updator"></param>
/// <returns></returns>
public int Update(int id,string content,DateTime beginTime,DateTime endTime,string updator)
{
IDataParameter[] paramArray = new IDataParameter[] {
Db.GetParameter("@Id",DbType.Int32,id),
Db.GetParameter("@Content",DbType.String,content),
Db.GetParameter("@BeginTime",DbType.DateTime,beginTime),
Db.GetParameter("@EndTime",DbType.DateTime,endTime),
Db.GetParameter("@Updator",DbType.String,updator)
}; int returnValue = ;
try
{
returnValue = Db.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure, "PR_NewsAfficheQueue_Update", paramArray);
}
catch (System.Exception ex)
{
LogHelper.Error("更新时出错{PR_NewsAfficheQueue_Update}" + ex.ToString());
}
return returnValue;
}

=================================

查询:

存储过程

USE [testdb]
GO
/****** 对象: StoredProcedure [dbo].[PR_QueueNewsAffiche_GetAllNews] 脚本日期: 11/01/2013 15:53:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO CREATE proc [dbo].[PR_QueueNewsAffiche_GetAllNews](@NewsAfficheId int)
as
begin
SET NOCOUNT ON;
select
Id,
[Content],
NewsAfficheId,
BeginTime,
EndTime,
Creator,
CreateTime,
Updator,
UpdateTime
from dbo.tbQueueNewsAffiche where NewsAfficheId=@NewsAfficheId order by BeginTime
end

对应DAL代码:

       /// <summary>
/// 查询所有排队新闻
/// </summary>
/// <returns></returns>
public List<QueueNewsAffiche_NewsInfo> GetList(int newsAfficheId)
{
IDataParameter[] paramArray = new IDataParameter[]{
Db.GetParameter("@NewsAfficheId",DbType.Int32,newsAfficheId)
}; List<QueueNewsAffiche_NewsInfo> list = null;
try
{
using (IDataReader reader = Db.ExecuteSPReader(ConnectionString, "PR_QueueNewsAffiche_GetAllNews", paramArray))
{
list = new List<QueueNewsAffiche_NewsInfo>();
while (reader.Read())
{
QueueNewsAffiche_NewsInfo newsInfo = new QueueNewsAffiche_NewsInfo();
IDataRecord rec = reader as IDataRecord; newsInfo.Id = Field.GetInt32(rec, "Id");
newsInfo.Content = Field.GetString(rec, "Content");
newsInfo.NewsAfficheId = Field.GetInt32(rec, "NewsAfficheId");
newsInfo.BeginTime = Field.GetDateTime(rec, "BeginTime");
newsInfo.EndTime = Field.GetDateTime(rec, "EndTime");
newsInfo.Creator = Field.GetString(rec, "Creator");
newsInfo.CreateTime = Field.GetDateTime(rec, "CreateTime");
newsInfo.Updator = Field.GetString(rec, "Updator");
newsInfo.UpdateTime = Field.GetDateTime(rec, "UpdateTime");
list.Add(newsInfo);
}
}
}
catch (System.Exception ex)
{
LogHelper.Error("查询时出错" + ex.ToString());
} return list;
}

根据id查询

USE [testdb]
GO
/****** 对象: StoredProcedure [dbo].[PR_QueueNewsAffiche_GetNewsById] 脚本日期: 11/04/2013 13:44:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[PR_QueueNewsAffiche_GetNewsById]
(
@Id int
)
AS
BEGIN
SET NOCOUNT ON; select *
from tbQueueNewsAffiche
where Id=@Id
END

对应DAL层代码:

        /// <summary>
/// 根据id查询
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public QueueNewsAffiche_NewsInfo GetQueueNewsById(int id)
{ IDataParameter[] paramArray = new IDataParameter[] {
Db.GetParameter("@Id",DbType.Int32,id)
};
QueueNewsAffiche_NewsInfo newsInfo = null;
try
{
using (IDataReader reader = Db.ExecuteSPReader(ConnectionString, "PR_NewsAfficheQueue_GetNewsById", paramArray))
{
while (reader.Read())
{
newsInfo = new QueueNewsAffiche_NewsInfo();
IDataRecord rec = reader as IDataRecord; newsInfo.Content = Field.GetString(rec, "Content");
newsInfo.BeginTime = Field.GetDateTime(rec, "BeginTime");
} }
}
catch (System.Exception ex)
{
LogHelper.Error("查询排队新闻时出错{PR_NewsAfficheQueue_GetNewsById}" + ex.ToString());
}
return newsInfo;
}

存储过程中执行SQL语句:

USE [BookSale]
GO
/****** 对象: StoredProcedure [dbo].[SP_SaleBookCustomAddress_GetCustomAddressByUserIdList_1_19882] 脚本日期: 01/16/2014 15:30:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO -- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
CREATE procedure [dbo].[SP_SaleBookCustomAddress_GetCustomAddressByUserIdList_1_19882]
(
@UserIdList nvarchar(max)
)
as
begin
exec('select * from SaleBookCustomAddress where UserId in ('+@UserIdList+') and Status=1') end

DAL获取上面存储过程获得的内容:

/// <summary>
/// 根据多个UserId批量获取地址实体列表
/// </summary>
/// <param name="userIdList"></param>
/// <returns></returns>
public List<Entity.Activity.SaleBookCustomAddress> GetActivityRosterByUserIdList(string userIdList)
{
IDataParameter[] par = new IDataParameter[] {
AdoHelper.GetParameter("UserIdList",DbType.String ,userIdList )
}; List<SaleBookCustomAddress> rtn = new List<SaleBookCustomAddress>();
try
{
using (IDataReader reader = AdoHelper.ExecuteReader(this.DefaultConnectionString, CommandType.StoredProcedure, "SP_SaleBookCustomAddress_GetCustomAddressByUserIdList_1_19882", par))
{
while (reader.Read())
{
SaleBookCustomAddress address = new SaleBookCustomAddress();
address.UserId = Convert.ToInt64(reader["UserId"]); UserDataAccess userDB = new UserDataAccess();
Users user = userDB.GetUserNickname(new int[] { Convert.ToInt32(address.UserId) })[];
if (user != null)
{
address.NickName = user.UserName;
}
else
{
address.NickName = "";
}
address.CustomName = Field.GetString(reader, "CustomName");
address.Region = Field.GetString(reader, "Region");
address.Province = Field.GetString(reader, "Province");
address.City = Field.GetString(reader, "City");
address.Street = Field.GetString(reader, "Street");
address.Postcode = Field.GetString(reader, "Postcode");
address.MobileNo = Field.GetString(reader, "MobileNo");
address.FullTelNum = Field.GetString(reader, "TeleArea") + "-" + Field.GetString(reader, "Telephone") + "-" + Field.GetString(reader, "TeleExt");
if (address.FullTelNum == "--")
{
address.FullTelNum = "";
}
else
{
if (string.IsNullOrEmpty(Field.GetString(reader, "TeleExt")))
{
address.FullTelNum = Field.GetString(reader, "TeleArea") + "-" + Field.GetString(reader, "Telephone");
}
}
address.LastUpdateTime = Field.GetDateTime(reader, "LastUpdateTime"); rtn.Add(address);
}
}
}
catch (Exception ex)
{
Log.LogException(ex);
}
return rtn;
}

 零碎补充:

@AboutTheAuthor varchar(max),
@RMBOriginPrice decimal(18,2), /*表示一共18位数字,其中包括2位小数点(整数部分则为16位)*/ decimal详解>>
@AuthorName varchar(100)='', /*参数赋初值 */
@RecordCount int=0 output /*赋初值的输出变量 */
select @RecordCount=count(1) from SaleBook where companyid=17 AS /*表示下面的为存储过程主体部分*/ /*@@表示全局变量(内置系统变量)、获取最新的主键id select @@rowcount受影响的行数 */
SELECT @@identity exec(@sql+@where+' ORDER BY CreateTime DESC') /*执行sql语句*/ WITH Mem_SALEBOOK_Book AS /*WITH的用法*/
(
SELECT bookId
FROM bookView V
WHERE CompanyId in ( select Item from dbo.fn_Split(@CompanyId,',') )
and BookId= CASE @SearchType WHEN 'bookid' THEN @SearchValue ELSE BookId END /*CASE...WHEN语法 */
and BookName like CASE @SearchType WHEN 'bookname' THEN @SearchValue ELSE BookName END
) SELECT M.*, SC.CompanyName as CompanyName FROM
Mem_SALEBOOK_Book MM with (nolock)
inner join bookView M on MM.BookId=M.BookId
left join SaleCompany SC on M.CompanyId=SC.CompanyId

站内导航:

SqlServer存储过程实例讲解

站外扩展:

sqlserver函数大全

SqlServer存储过程学习笔记(增删改查)的更多相关文章

  1. JDBC学习笔记——增删改查

    1.数据库准备  要用JDBC操作数据库,第一步当然是建立数据表: ? 1 2 3 4 5 6 CREATE TABLE `user` (   `id` int(11) NOT NULL AUTO_I ...

  2. MySQL学习笔记——增删改查

    有关数据库的DML操作 -insert into -delete.truncate -update -select -条件查询 -查询排序 -聚合函数 -分组查询 DROP.TRUNCATE.DELE ...

  3. android使用xfire webservice框架远程对sqlserver操作(包括增删改查)的实例!!已在真机上试验通过

    前两天,公司有一个利用android远程操作sqlserver的项目,对此我是毫无头绪的,但也挺感兴趣的,于是开始上网搜索方法,网上有挺多方法了,发现使用webservice的挺多的,不过我对这些技术 ...

  4. java+jsp+sqlserver实现简单的增删改查操作 连接数据库代码

    1,网站系统开发需要掌握的技术 (1)网页设计语言,html语言css语言等 (2)Java语言 (3)数据库 (4)等 2,源程序代码 (1) 连接数据库代码 package com.jaovo.m ...

  5. python连接sqlserver和MySQL实现增删改查

    参考python核心编程 编写一个用户洗牌的脚本,根据用户输入,选择连接sqlserver或者MySQL,创建数据库.表,随机生成数据,并实现增删改查. 其中,为了兼容python2和python3, ...

  6. ADO.NET对SqlServer进行简单的增删改查

    对数据库进行增删改查,首先想到的应该就是连接字符串了. 我们的连接字符串是由"Server=地址(本机=local);Database=数据库名称;User Id=登陆用户名;Passwor ...

  7. jdbc编程学习之增删改查(2)

    一,enum类型的使用 在SQL中没有布尔类型的数据,我们都使用过布尔类型,当属性的值只用两种情况时.例如性别等.那在数据库对这些属性的值个数比较少时我们应该使用什么数据类型呢?SQL给我们提供了枚举 ...

  8. MongoDB学习之--增删改查(1)

    本文是对mongodb学习的一点笔记,主要介绍最简单的增删改操作,初学,看着API,有什么错误,希望大家指正:(使用官方驱动) 1.增 增加操作是最简单的,构造bsonDcument插入即可: 方式1 ...

  9. .net 连接SqlServer数据库及基本增删改查

    一.写在前面 因为这学期选修的 .net 课程就要上机考试了,所以总结下.net 操作 SqlServer 数据的方法.(因为本人方向是 Java,所以对.net 的了解不多,但以下所写代码均是经过测 ...

随机推荐

  1. 利用Hadoop实现超大矩阵相乘之我见(一)

    前记 最近,公司一位挺优秀的总务离职,欢送宴上,她对我说“你是一位挺优秀的程序员”,刚说完,立马道歉说“对不起,我说你是程序员是不是侮辱你了?”我挺诧异,程序员现在是很低端,很被人瞧不起的工作吗?或许 ...

  2. C++学习8 构造函数的参数初始化表

    构造函数是一种特殊的成员函数,在创建对象时自动执行,主要用来进行初始化工作,例如对 private 属性的成员变量赋值. 对成员变量的初始化,除了在构造函数的函数体中一一赋值,还可以采用参数初始化表. ...

  3. [InnoSetup]Inno Setup软件打包脚本

     脚本由 Inno Setup 脚本向导 生成! ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!   #define MyAppName "SFT期货交易系统&quo ...

  4. datetime时区转换

    http://www.dannysite.com/blog/122/ Python标准库中的datetime模块提供了各种对日期和时间的处理方法.从本文的主题着手,首先利用datetime中提供的ut ...

  5. [SQL]patindex的用法

    返回指定表达式中某模式第一次出现的起始位置:如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零. Transact-SQL 语法约定 语法 PATINDEX ( '%pattern%' , ...

  6. ZOJ 2404 Going Home 【最小费用最大流】

    思路: 把房子和人看成点,加上源点和汇点. 源点和每个人连容量为1,权值为0的边. 每个人和每个房子连容量为1,权值为距离的边. 每个房子和汇点连容量为1,权值为0的边. #include<st ...

  7. nyoj 102 次方求摸 快速幂

    点击打开链接 次方求模 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100) 每组测 ...

  8. Hbase基础操作

    $HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'tablename'

  9. 高校应该使用 Drupal 的10大理由

    使用 Drupal 已经成为全球顶尖高校中的一种潮流,它已经被全球数以百计的院校选择并应用,无论是哈佛.斯坦福.杜克.布朗.罗格斯.剑桥.耶鲁还是其它众多知名高校,都已经选择 Drupal 作为它们理 ...

  10. asp.net 播放flash

    注意3点: 1.路径,swf播放器对应的是当前页面的路径,flv视频对应的是swf播放器的路径2.路径中不能出现中文3.IIS设置,IIS站点属性中的HTTP头->MIME添加MIME影射关系, ...