我在动态创建表并插入表时遇到了一些麻烦.我已尝试过多种方式,无法产生理想的结果.请参阅下文,了解我正在尝试的简化版本.请注意,这只是一次尝试 - 我也尝试了其他尝试(例如INSERT INTO [table] EXEC(@exe)
)也没有成功.
每次我在下面尝试,我都会收到一条消息
命令已成功完成
但是甚至没有创建过表格.
我正在使用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)
Giorgi Nakeu.. 5
您需要声明为:
DECLARE @sqlText nvarchar(1000)
其他方式默认长度为1.并且由于您在语句的开头有新行,因此它不会抛出语法异常(您的查询仅包含新行符号并且它是合法的).删除新行,您将收到错误.
https://msdn.microsoft.com/en-us/library/ms176089.aspx
如果未在数据定义或变量声明语句中指定n,则默认长度为1.
您可以使用:
print @sqlText
看看你的陈述是什么样的.
您需要声明为:
DECLARE @sqlText nvarchar(1000)
其他方式默认长度为1.并且由于您在语句的开头有新行,因此它不会抛出语法异常(您的查询仅包含新行符号并且它是合法的).删除新行,您将收到错误.
https://msdn.microsoft.com/en-us/library/ms176089.aspx
如果未在数据定义或变量声明语句中指定n,则默认长度为1.
您可以使用:
print @sqlText
看看你的陈述是什么样的.