Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 更改名称位于变量中的表_Sql_Sql Server 2005_Stored Procedures - Fatal编程技术网

Sql 更改名称位于变量中的表

Sql 更改名称位于变量中的表,sql,sql-server-2005,stored-procedures,Sql,Sql Server 2005,Stored Procedures,在这种情况下,我需要从存储过程中为几个不同的客户机生成一个表。这些表都有相同的核心值,但有时它们有额外的列 我不希望每次都复制和粘贴那些生成SQL的表,所以我当前的设置是,我有一个存储过程,返回核心列,并将其加载到所需的EntertableClientName中,因为它是一个访问这些列的外部应用程序,发送到服务器的每个命令似乎都被视为不同的连接,因此标准会话临时表似乎无法完成此任务 现在我想运行第二个存储过程来更新临时表以添加到新列中。可能会有几个这样的程序,在某些情况下可能会共享这些程序。为此

在这种情况下,我需要从存储过程中为几个不同的客户机生成一个表。这些表都有相同的核心值,但有时它们有额外的列

我不希望每次都复制和粘贴那些生成SQL的表,所以我当前的设置是,我有一个存储过程,返回核心列,并将其加载到所需的EntertableClientName中,因为它是一个访问这些列的外部应用程序,发送到服务器的每个命令似乎都被视为不同的连接,因此标准会话临时表似乎无法完成此任务

现在我想运行第二个存储过程来更新临时表以添加到新列中。可能会有几个这样的程序,在某些情况下可能会共享这些程序。为此,为了共享它们,我需要以某种方式告诉它要更新哪个表

我目前的选择似乎是:

我可以将其作为字符串传递并使用动态sql,但这看起来很混乱

我可以对每个客户机强制执行一个存储过程,然后将每个客户机的表名硬编码到该过程中。这似乎有可能产生非最佳代码,即许多非常相似甚至完全相同的过程


有人能提出比这些更好的选择吗?目前我正在考虑第二种方法,因为没有太多的客户,这似乎是最简单的方法。不过我想要一些更好的选择。。。我希望有一个函数或什么东西可以接受一个字符串并得到这个名称的表对象…

我的最终解决方案就是重构我的代码,使我的核心过程返回所有可用于任何客户端的列。这意味着它通常会返回不相关或为空的数据。此外,如果新客户机需要额外的列,而某些代码可能需要更新这些列(如果它假定了给定的列数),则此方法会导致潜在的问题

不幸的是,这不是一个好的解决方案,但由于缺乏其他选择,我选择了它