Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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_Sql Server 2008 - Fatal编程技术网

使用所选参数作为表标题SQL创建表

使用所选参数作为表标题SQL创建表,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我的当前代码如下所示,无法工作。我想创建一个标题为cor_@dt的表,在本例中,@dt是所选的日期参数,即2013年8月14日 USE [dWA_NSCC] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- exec [CORP\Eng].[No_Indx] '8/14/2013', '1' ALTER PROCEDURE [CORP\Eng].[No_Indx] (@dt datetime, @numb int) AS BEG

我的当前代码如下所示,无法工作。我想创建一个标题为cor_@dt的表,在本例中,@dt是所选的日期参数,即2013年8月14日

USE [dWA_NSCC]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- exec [CORP\Eng].[No_Indx] '8/14/2013', '1'
ALTER PROCEDURE [CORP\Eng].[No_Indx]
    (@dt datetime, @numb int)
AS
BEGIN

DROP TABLE @dt
CREATE TABLE @dt
(
ticker varchar(50),
no_indx_cusip varchar(50),
benchmark_cusip varchar(50),
maxcor decimal(10,5),
regcoef decimal(10,5),
dt_pnts int
)


 ... some more code

好吧,暂时忘记这闻起来非常非常糟糕,这段代码将创建一个名为08/14/2013.cor的表。请注意,在所有引用它的代码中,由于它以数字开头并包含错误字符,因此必须在名称周围使用[方括号]

DECLARE @sql NVARCHAR(MAX);

SET @sql = N'CREATE TABLE ' + QUOTENAME(CONVERT(CHAR(10), @dt, 101) + '.cor') 
  + '
  (
    ticker varchar(50),
    ...
  );';

EXEC sp_executesql @sql;
更好的设计是使用一个带有附加列的表(可能用作聚集索引),然后您可以插入某一天的压力测试信息,该天的查询可以与另一天的查询来自同一个表。

您可以这样做:

CREATE TABLE _temp (
    -- Columns here
)
EXEC sp_rename _temp, @newtablename

有了它,您可以将@newtablename设置为您想要的任何名称。

这就引出了一个显而易见的问题。您为什么要尝试创建名称中包含日期的表?这通常是糟糕数据库设计的一个危险信号。是否确实要创建一个名为8/14/2013的表?为什么,为什么,为什么?为什么您每天都要创建一个新表,为什么该表以日期命名?它包含什么?@euge1220,不要每天创建一个表。添加一个INSERT_DATE列并将所有数据存储在一个表中。在使用讽刺时,我们应该能够指定不同的字体颜色。@Declan_K你只能对人们讲这么多道理。有时这只是要求,他们也无法解决。@Declan_K另外,我更希望有一个解释解决方法的答案,但也能解释危险,而不仅仅是解释解决方法的答案。你认为哪个更令人鼓舞?你认为哪个对其他读者更好?我会在附加专栏中采纳你的建议。我不是一个程序员,我只是需要使用SQL有时为信息兼容