Sql 将字符串列表作为输入并插入缺少的行然后返回它们的存储过程
我有一个表Sql 将字符串列表作为输入并插入缺少的行然后返回它们的存储过程,sql,sql-server-2008,stored-procedures,Sql,Sql Server 2008,Stored Procedures,我有一个表名称 Id Name +----+---------------+ 1 John 2 Kate 3 Mark 我想创建一个执行以下操作的存储过程: 1)将名称列表作为字符串作为输入参数 我对此做了一些研究,但没有找到最好的方法。我将在C#应用程序中从实体框架调用存储过程。我在考虑用逗号分隔的字符串传递名称,并在过程中拆分它们。但我不知道这是怎么做到的 2)对于列表中的
名称
Id Name
+----+---------------+
1 John
2 Kate
3 Mark
我想创建一个执行以下操作的存储过程:
1)将名称列表作为字符串作为输入参数
我对此做了一些研究,但没有找到最好的方法。我将在C#应用程序中从实体框架调用存储过程。我在考虑用逗号分隔的字符串传递名称,并在过程中拆分它们。但我不知道这是怎么做到的
2)对于列表中的每个名称,如果该名称在name
列中不存在,请为其插入新行。
如果存在开关盒,我如何执行该操作?如果不存在,我如何插入该开关盒
3)选择输入列表中的*行。
在添加所有缺少的名称之后,我想选择输入列表中的所有名称及其id
这可以在一个存储过程中完成,还是必须将它们划分为多个存储过程
我正在寻找如何做每一步的提示,以及它们是否可以结合起来
谢谢保持数据库端精简,将逻辑放在应用程序端,特别是当您有脾气暴躁的DBA时 改为使用合并/向上插入
查看此项。如果将逗号分隔的列表作为参数传递到存储过程中,则需要了解如何使用
charindex
、left
、substring
和right
拆分每个名称时,您需要将它们添加到临时表或表值变量中
您将使用insert
语句上的exists()
子查询来决定是否将新名称插入names
表
最后,您可以使用select语句将temp table/table valued变量连接回Names
表,以取出所有键(包括新键),并将它们传递回前端