zoukankan      html  css  js  c++  java
  • SQL Server存储过程

             在重构机房的时候,有非常多地方用到了存储过程,在这里小小的总结一下。

           存储过程(Stored Procedure)是一组为了完毕特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定的存储过程的名字并给出參数(假设该存储过程带有參数)来运行它。存储过程通过将处理数据的程序从客户应用程序移动到server,从而能够减少网络流量。并提高性能和数据完整性。

            1、创建

            主要有两种方法:

           (1)利用SQL Server Management Studio创建存储过程

            ①单击数据库前的"+"号,然后单击"可编程性"。找到"存储过程",右击"新建存储过程",系统会自己主动生成一个模板。仅仅须要改动对应的方法就可以。

            ②利用T-SQL创建存储过程

            

    CREATE PROCEDURE  过程名
    @Param  參数类型
    .......
    @Param  參数类型  output
    ......
    AS
    BEGIN
    命令行或命令块
    END

            比如。创建加入用户的存储过程:

            

    CREATE procedure [dbo].[pro_AddUser]
    @user_id varchar(11),
    @user_name varchar(11),
    @user_level varchar(10),
    @user_pwd varchar(11),
    @user_register varchar(10)
    as
    insert T_User values (@user_id ,@user_name,@user_level ,@user_pwd ,@user_register )

             在这里有须要注意的几点:

            *过程名:尽量以pro_或者proc_开头。不建议使用使用sp_为前缀。由于SQL Server系统的存储过程都是以sp_开头,这样在查找的时候会先查找系统自身的,减少查询速度。

            *BEGIN...END..之间的语句,主要是存储过程要运行的任务:

                查询语句:SELECT 

                插入语句:INSERT

                更新语句:UPDATE

                删除语句:DELETE

                假设存储过程返回输出參数或0,则使用OUTPUT

            2、调用

            (1)利用T-SQL调用存储过程             

    EXECUTE 过程名 [參数值。······]
            

            (2)在client代码端

            D层代码:

            

        Public Function Add_User(enuser As Entity.E_User) As Boolean Implements IUser.Add_User
            Dim pt As SqlParameter() = {New SqlParameter("@user_id", enuser.UserID), _
                                        New SqlParameter("@user_name", enuser.UserName), _
                                        New SqlParameter("@user_level", enuser.Level), _
                                        New SqlParameter("@user_pwd", enuser.UserPwd), _
                                        New SqlParameter("@user_register", Entity.E_PubShare.str_id)
                                    }
            cmdText = "pro_AddUser"
            Return helper.ExecuteDataTable(cmdText, CommandType.Text, pt)
        End Function

            SqlHelper类:

            

        Public Function ExecuteDataTable(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal pt As SqlParameter()) As Boolean
    
            Using con As New SqlConnection(strCon)
                Dim cmd As SqlCommand = con.CreateCommand()            
    
                cmd.CommandText = cmdText            
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.AddRange(pt)          
    
                Try
                    con.Open()
                    Return cmd.ExecuteNonQuery()
                    cmd.Parameters.Clear()
                   
                Catch ex As Exception
                    Return Nothing
                    Throw ex
                End Try
    
            End Using
        End Function

            3、反思总结

            存储过程并不算难,可是我在学习的过程中还是出现了不少问题。归根究竟是对SQL语言还不够熟练。只是经过几次卡壳总算是磕磕绊绊的了解的差点儿相同了,这也是我们重构机房的意义所在。把曾经学习到的知识真正运用到实践中来,是一个查漏补缺完好知识网的过程。遇到问题是在所难免的,不要嫌麻烦,而要把它当成提高自己的机会,每一个细小的困难克服了,终于会实现一个大的飞跃。

              

          

  • 相关阅读:
    js高级1
    JUC总览
    7 种阻塞队列相关整理
    Exchanger 相关整理
    Semaphore 相关整理
    ConcurrentLinkedQueue 相关整理
    ConcurrentHashMap(1.8) 相关整理
    ConcurrentHashMap(1.7) 相关整理
    ReentrantReadWriteLock 相关整理
    LockSupport 工具相关整理
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6938442.html
Copyright © 2011-2022 走看看