我试图弄清楚如何创建一个使用传递给存储过程的变量创建的临时表,我知道你可以在引号中使用+连接(如检查下面是否存在表) )但是我可以使用变量生成临时表,因为有多个代理将使用它,我必须确保该表是唯一的,以防它同时运行。
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
答案 0 :(得分: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