我当前的代码如下所示(不起作用)。我想创建一个表格,其标题为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
答案 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
设置为您想要的任何内容。