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

时间:2013-08-14 18:48:26

标签: 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
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

2 个答案:

答案 0 :(得分:7)

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

DECLARE @sql NVARCHAR(MAX);

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

EXEC sp_executesql @sql;

一个更好的设计是使一个表有一个额外的列(可能作为聚集索引),然后你可以插入压力测试信息一天,那天的查询可以来自与另一天的查询相同的表格。

答案 1 :(得分:1)

你可以这样做:

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

通过这个,您可以将@newtablename设置为您想要的任何内容。