SQL:如何使存储过程中的表名动态化

2024-01-03

我对 SQL Server 还很陌生,希望这里有人可以帮助我(我正在使用 QL Server 2008)。

以下是一个按预期工作的小过程。

现在我想使用相同的过程来更新多个表,因为所有这些表都具有完全相同的列名称和列格式,唯一的区别是我添加的表名称的第二部分XXX below.

有人可以告诉我如何使其变得动态并为此提供一些解释吗? 我不能在这里提供更多信息,因为我不确定如何解决这个问题 - 除了可能声明@sql nvarchar(max)并将整个查询包装在SET @sql = N'...'在执行之前。

我的存储过程:

    CREATE PROCEDURE [dbo].[Cal_UpdateTeam]
        @team nvarchar(100),
        @teamID int,
        @notes nvarchar(1000),
        @log nvarchar(100),
        @admin varchar(50)
    AS
    BEGIN
        SET NOCOUNT ON;

        BEGIN   

        IF NOT EXISTS 
        (
                SELECT  * 
                FROM    Cal_XXX
                WHERE   teamID = @teamID
        )
        INSERT INTO Cal_XXX
        (
                team,
                teamID,
                notes,
                log,
                admin
        )
        SELECT  @team,
                @teamID,
                @notes,
                @log,
                @admin
        ELSE
                UPDATE  Cal_XXX
                SET     team = @team,
                        teamID = @teamID,
                        notes = @notes,
                        log = @log,
                        admin = @admin
                WHERE   teamID = @teamID

        END
END

非常感谢您对此的任何提示和建议,迈克。


您应该将 sql 查询包装在 nvarchar 中,然后执行该查询,如下例所示:

    declare @sql nvarchar(max)
    declare @TableName nvarchar(max)
    set @TableName = 'mytable'
    set @sql = 'Select * from ' + @TableName
    Exec sp_executesql @sql
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL:如何使存储过程中的表名动态化 的相关文章

随机推荐

  • 访问服务器上使用 WebClient.UploadData 发送的确切数据

    新手问题 我使用 WebClient UploadData 方法将字节数组形式的大文本字符串发送到网站 但我不确定从服务器上的确切位置检索该数据 我读过一些帖子 说它位于我已经知道的请求对象中 但我到底如何检索我发送的特定字节数组 如以下
  • Node.JS TCP 上的无界并发/流背压

    据我了解 Node 的事件 IO 模型的后果之一是 一旦连接了接收事件处理程序 或否则开始监听数据 如果接收器无法足够快地处理传入数据 则可能会导致 无限并发 即底层节点继续尽可能快地从套接字读取数据 在事件循环上调度新数据事件 而不是阻塞
  • javascript 对于全局声明的变量返回未定义[重复]

    这个问题在这里已经有答案了 我是 javascript 的初学者 我有一个疑问 我的代码如下所示 当我运行此命令时 第一个警报框显示 未定义 我不明白为什么 非常感谢 这是因为之后hoisting but 执行前 your foo 函数内部
  • 如何将Unicode编码的字符串转换为字母字符串

    我有一个转义的字符串Unicode http en wikipedia org wiki Unicode人物 uXXXX 我想将其转换为常规 Unicode 字母 例如 u0048 u0065 u006C u006C u006F World
  • 将单选按钮数据发送到下一个活动

    我试图允许用户输入他们的姓名 然后单击三个单选按钮之一 然后单击提交按钮 在下一个活动中 它将显示他们的姓名和他们选择的单选按钮 我已经设法发送名称 但我不确定如何发送单选按钮选择 有人可以帮忙吗 这是我在主要活动布局 xml 中的内容
  • Swift TDD 和异步 URLSession - 如何测试?

    我尝试熟悉 TDD 如何测试异步 URLSession 调用 哪种 XCAssert 更适合使用 在哪里 在哪个阶段 我的第一个想法是创建一个函数 其中包含 URLSession 并在该函数内将 bool 标志设置为 true 然后在 XC
  • Pip 在防火墙后无法工作

    我正在尝试从公司防火墙后面使用 pip 但没有任何运气 我已经设置了http proxy and https proxy环境变量 wget 可以工作 但 pip 不行 我尝试过这个 sudo E pip install virtualenv
  • 如何 gzip @font-face 示例?

    有人可以提供如何 gzip webfont 套件的示例吗 生成器为我提供了这段代码 需要改变什么 font face font family DesigersBold src url desib webfont eot src url de
  • 如何在Android应用程序中过滤Listview后获得正确的位置

    在我的应用程序中 当用户在搜索框中输入内容时 列表会被过滤 但列表项的位置会发生变化 由于用户单击列表项时位置发生了变化 因此会导致不必要的活动 因为我已经根据列表项的位置设置了事件 即使在过滤列表后 列表项 行是否有任何参数保持不变 No
  • Windows 8 - IE 无法访问主机文件中列出的站点

    我在 IIS 中设置了许多本地网站 并在主机文件中包含条目以 使这些网站在本地可用 我使用的是 Windows 7 机器 所有浏览器中的一切都运行正常 迁移到 Windows 8 在 IIS 中使用相同的主机文件和相同的网站似乎会导致 In
  • 如何在按键上提交表单?

    我用这个script http www javascripter net faq searchin htm在静态页面中搜索 但我希望在我输入文本时进行搜索 而不是在单击按钮时进行搜索 我进行了搜索 发现其中任何一个都可以工作 onkeypr
  • 将整列与列表中的值相乘

    我有一个非常大的数据框 希望将每列中的每个元素与列表中的值相乘 Name c1 c2 c3 c4 0 a1 1 2 2 3 1 a2 2 1 1 2 2 a3 3 1 2 1 3 a4 2 3 3 4 l 2 3 1 4 我想做的是将整个列
  • 未找到使用 Json 的类的序列化器

    我有一个基本的 Spring Boot 2 1 2 RELEASE 应用程序 使用Spring Initializr JPA 嵌入式Tomcat Thymeleaf模板引擎 并打包为具有restful架构的可执行JAR 我有一个在 Rest
  • 实体框架不支持 x.ToString()!

    实体框架无法识别我的将路由对象转换为特定字符串的 ToString 方法 public IEnumerable
  • Rails 小数精度和小数位数

    我在 Rails 应用程序中有大约 30 个表 并且有大约 6 个表我想更改一些小数列的精度和小数位数 您如何对现有的列进行此操作 您是否需要单独进行每个新的迁移 还是可以一次性完成所有迁移 change column table name
  • Xcode:如何使用每个配置不同的多个“显示名称”值?

    在 Xcode 中 我们使用多种配置来编译多个具有不同捆绑 ID 和显示名称的不同应用程序 虽然 Identity gt Bundle Identifier 正确显示灰色的 只读值 但这与 Identity gt Display Name
  • 列表理解过滤 - “set() 陷阱”

    一种相当常见的操作是过滤一个list基于另一个list 人们很快发现 x for x in list 1 if x in list 2 对于大输入来说速度很慢 它是 O n m 恶心 我们如何加快速度 用一个set进行过滤查找 O 1 s
  • 如何将系统时间格式化为字符串?

    看来我已经没有办法转了SystemTime成字符串 我必须使用SystemTime因为我需要从返回的值std fs Metadata created 您应该使用 Chrono 来获取格式支持 从 Chrono v0 4 0 开始 这变得更加
  • Android Studio 说“局部变量是多余的”[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我收到关于许多方法的警告local variable is redundant 这是一个示例方法 public MyObject getMSLi
  • SQL:如何使存储过程中的表名动态化

    我对 SQL Server 还很陌生 希望这里有人可以帮助我 我正在使用 QL Server 2008 以下是一个按预期工作的小过程 现在我想使用相同的过程来更新多个表 因为所有这些表都具有完全相同的列名称和列格式 唯一的区别是我添加的表名