sql server 存储过程入门(一)以及C#简单调用

    Transact-SQL中的存储过程,非常类似于编程语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。

基本概念

    存储过程是由SQL 语句和控制流程语句构成的语句块(语句集合)。他不仅可以输入参数,还可以输出参数。存储过程可以通过接收参数向调用者返回结果集,结果集的格式由调用者确定。可以在存储过程中调用另一个存储过程

创建存储过程并SSMS中执行

使用 SQL Server Management Studio

  1. 在 “对象资源管理器”中,连接到 数据库引擎 的实例,然后展开该实例。
  2. 依次展开 “数据库”、 AdventureWorks2012 数据库和 “可编程性”。
  3. 右键单击“存储过程”,再单击“新建存储过程”。
  4. 在 “查询” 菜单上,单击 “指定模板参数的值”。
  5. 在 “指定模板参数的值” 对话框中,输入下列所示的参数值。
参数
author 作者
Create date 创建日期
Descript 介绍
Procedure_name GetXHG
@Param1 @UserName
@Datatype_For_Param1 nchar(100)
Default_Value_For_Param1 NULL
@Param2
@Datatype_For_Param2
Default_Value_For_Param2
  1. 点击“确定”
  2. 查询编辑器中,试用一下语句代替SELECT 语句

    SELECT password,email,sex,RANK,groupname,isdelete,buildtime  
    from Member  
    where UserName = @username
    
  1. 若要测试语法,请在 “查询” 菜单上,单击 “分析”。 如果返回错误消息,则请将这些语句与上述信息进行比较,并视需要进行更正。
  2. 若要创建该过程,请在 “查询” 菜单上单击 “执行”。 该过程作为数据库中的对象创建。
  3. 若要查看在对象资源管理器中列出的过程,请右键单击“存储过程”,然后选择“刷新”。
  4. 若要运行该过程,请在对象资源管理器中右键单击存储过程名称 GetXHG,然后选择“执行存储过程”。
  5. 在“执行过程”窗口中,输入 xiehongguang 作为参数 @UserName 的值。
        

使用 Transact-SQL 在查询编辑器中创建过程

  1. 在 “对象资源管理器”中,连接到 数据库引擎的实例。
  2. 从 “文件” 菜单中,单击 “新建查询”。
  3. 将以下示例复制并粘贴到查询窗口中,然后单击 “执行”。 该示例将使用其他过程名称创建与上述相同的存储过程。

    USE LuckyGitlabStats;  
    GO  
    CREATE PROCEDURE GetXHG   
        @UserName nchar(100)  
    AS   
        SELECT password,email,sex,RANK,groupname,isdelete,buildtime  
        from Member  
        where UserName = @username;  
    GO  
    
  4. 若要运行该过程,请将以下示例复制并粘贴到一个新的查询窗口中,然后单击 “执行”。 请注意,将显示指定参数值的不同方法。

    [USE Lucky;]  
    [GO]
    
    EXECUTE GetXHG N'xiehongguang';  
    -- Or  
    EXEC dbo.GetXHG @username = N'xiehongguang';  
    GO  
    -- Or  
    EXECUTE GetXHG @username = N'xiehongguang';  
    GO 
    

C# 调用执行

public List<Member> gettest()
{
    List<Member> members = new List<Member>();
    ConnectLocalSQL connectLocaldb = new ConnectLocalSQL();
    SqlConnection conn = connectLocaldb.ConnectDataBase();
    //打开数据库
    conn.Open();
    //创建查询语句
    SqlCommand querySingleInfo = conn.CreateCommand();
    querySingleInfo.CommandText = "GetXHG";
    querySingleInfo.CommandType = System.Data.CommandType.StoredProcedure;

    //querySingleInfo.Parameters.Add("@username", SqlDbType.NChar);
    //querySingleInfo.Parameters["@username"].Value = "xiehongguang";

    querySingleInfo.Parameters.AddWithValue("@username", "xiehongguang");
    SqlDataReader userInfoReader = querySingleInfo.ExecuteReader();
    //有多行数据,用while循环
    while (userInfoReader.Read())
    {
        Member member = new Member();
      // member.username = userInfoReader["UserName"].ToString().Trim();
        member.password = userInfoReader["Password"].ToString().Trim();
        member.email = userInfoReader["Email"].ToString().Trim();
        member.sex = userInfoReader["Sex"].ToString().Trim();
        member.rank = userInfoReader["Rank"].ToString().Trim();
        member.groupName = userInfoReader["Groupname"].ToString().Trim();
        member.isdelete = userInfoReader["IsDelete"].ToString().Trim();
        members.Add(member);
    }
    //关闭查询
    userInfoReader.Close();
    //关闭数据库连接
    conn.Close();
    return members;
} 

参考

https://docs.microsoft.com/zh-cn/sql/relational-databases/stored-procedures/create-a-stored-procedure
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand(v=vs.110).aspx
《SQL 查询的艺术》

文章目录
  1. 1. 基本概念
  2. 2. 创建存储过程并SSMS中执行
    1. 2.1. 使用 SQL Server Management Studio
    2. 2.2. 使用 Transact-SQL 在查询编辑器中创建过程
  3. 3. C# 调用执行
    1. 3.1. 参考
|