sqlserver 简单的存储过程学习记录

        在这个项目中 ,之前都是用强哥已经写好的存储过程 ,但是自己没怎么写过 ,刚好最近在需要都是自己一条龙服务的过程中 ,需要写到存储过程 ,刚开始学 ,对于一个做了开发两年的程序员来说 ,实在不应该不会 ,所以为了让自己记住 ,写下随笔 。

       这条的作用就是先检查是否存在永远的数据 ,如果存在 ,则不执行insert操作,否则执行insert操作 。

       

USE [MicroBlog]
GO
/****** Object:  StoredProcedure [dbo].[Proc_InsertGuest]    Script Date: 09/28/2012 10:40:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[Proc_InsertGuest]
(
	@VID INT,
@Gest varchar(20) ,
@rc AS BIT OUTPUT
)
AS 
BEGIN
IF NOT EXISTS (SELECT * FROM VGuest v WHERE v.VID=@VID AND v.Gest=@Gest)
BEGIN
	INSERT INTO VGuest
	(
		VID,Gest		
	)
	VALUES
	(
		@vid,@Gest
	)
	  SET @rc = 0
END

   ELSE
        BEGIN
         SET @rc = 1
        END
END

  代码很简单 ,@vid,@Gest是作为传入的参数 ,@rc则是output的参数 ,在程序中只需要接收这个值就可以直接使用。

 /// <summary>
        /// 添加嘉宾
        /// </summary>
        /// <param name="Vid"></param>
        /// <param name="guestID"></param>
        /// <returns></returns>
        public int addGuset(int Vid, string Gest)
        {
            try
            {
                String Query = "Proc_InsertGuest";
                SqlParameter[] Parms = {
                                          new SqlParameter("@VID",Vid),
                                         new  SqlParameter("@Gest",Gest),
                                         new SqlParameter( "@rc","")
                                       };
                Parms[2].Direction = ParameterDirection.Output;
                db.AddParameter(Parms);
                db.ExecuteScalar(Query, CommandType.StoredProcedure, connState);
                return Convert.ToInt32(Parms[2].Value);
            }
            catch (Exception ex)
            {
                throw new Exception("添加微访谈嘉宾失败!\n" + ex.Message);
            }
        }

  

posted on 2012-09-28 10:49  梁子se7en  阅读(143)  评论(0编辑  收藏  举报