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 回答