0

ストアド プロシージャに渡された変数を使用して作成された一時テーブルを作成する方法を見つけようとしていますが、引用符で囲まれている場合は + を使用して連結できることはわかっています (以下のテーブルが存在するかどうかのチェックに見られるように)。これを使用する複数のエージェントが存在するため、変数を使用して一時テーブルを生成することができ、同時に実行された場合にテーブルが一意であることを確認する必要があります。

CREATE PROCEDURE TP_Getagentcdr @agentid VARCHAR(20), @date VARCHAR(20) ,@enddate VARCHAR(20)

AS
BEGIN
  IF OBJECT_ID('databasename.'+@agentid+'Tempcdr') IS NOT NULL  
    DROP TABLE databasename.+@agentid+Tempcdr

  CREATE TABLE databasename.@agentid+Tempcdr
END
4

1 に答える 1

2

必要なものはDynamic SQLと呼ばれます。

まず、VARCHAR 内にステートメントを作成します。

DECLARE @drop_statement VARCHAR(MAX) = 'DROP TABLE databasename.' + @agentid + 'Tempcdr'

次に、次の方法でステートメントを実行しsp_executesqlます。

sp_executesql @drop_statement

テーブルの作成も同じ方法で行います。

DECLARE @create_statement VARCHAR(MAX) = 'CREATE TABLE databasename.' + @agentid + 'Tempcdr'

sp_executesql @create_statement
于 2012-07-03T07:47:04.687 に答える