0

我当前的代码如下所示(不起作用)。我想创建一个表,其标题为 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
4

2 回答 2

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;

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

于 2013-08-14T18:54:05.040 回答
1

你可以这样做:

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

有了这个,你可以设置@newtablename任何你想要的。

于 2013-08-14T18:55:04.127 回答