我在动态创建表并将其插入其中时遇到了一些麻烦。我已经尝试了多种方法,但无法产生理想的结果。请参阅下面的我正在尝试做的事情的简化版本。请注意,这只是一次尝试 - 我也尝试过其他尝试(例如 INSERT INTO [table] EXEC(@exe)
),但也没有成功。
每次我尝试下面时,我都会收到一条消息
Command(s) completed successfully
但还没有创建表。
我使用的是 SQL Server 2008 R2。
DECLARE @sqlText nvarchar
SET @sqlText =
N'
IF OBJECT_ID(''[BudgetProcedures].dbo.UnitOccupancy'', ''U'') IS NOT NULL
DROP TABLE [BudgetProcedures].dbo.UnitOccupancy;
CREATE TABLE [BudgetProcedures].dbo.UnitOccupancy (Property varchar(15)
,Unit varchar(15)
,YearLength varchar(15)
,Lease varchar(15));
INSERT INTO [BudgetProcedures].[dbo].[UnitOccupancy] (Property, Unit, YearLength, Lease)
(SELECT ''ExProp''
,''ExUnit''
,''ExYrlen''
,''ExLease''
)
'
EXEC(@sqlText)
最佳答案
您需要声明为:
DECLARE @sqlText nvarchar(1000)
否则默认长度为 1。而且由于您在语句开头有新行,因此不会引发语法异常(您的查询仅包含新行符号,并且它是合法的)。删除新行,你会得到一个错误。
https://msdn.microsoft.com/en-us/library/ms176089.aspx
When n is not specified in a data definition or variable declaration statement, the default length is 1.
您可以使用:
print @sqlText
看看你的陈述是什么样的。
关于sql - TSQL - 动态创建表和插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34424199/