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 に答える