当前位置:  开发笔记 > 数据库 > 正文

TSQL - 动态创建表和插入

如何解决《TSQL-动态创建表和插入》经验,为你挑选了1个好方法。

我在动态创建表并插入表时遇到了一些麻烦.我已尝试过多种方式,无法产生理想的结果.请参阅下文,了解我正在尝试的简化版本.请注意,这只是一次尝试 - 我也尝试了其他尝试(例如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

看看你的陈述是什么样的.



1> Giorgi Nakeu..:

您需要声明为:

DECLARE @sqlText nvarchar(1000)

其他方式默认长度为1.并且由于您在语句的开头有新行,因此它不会抛出语法异常(您的查询仅包含新行符号并且它是合法的).删除新行,您将收到错误.

https://msdn.microsoft.com/en-us/library/ms176089.aspx

如果未在数据定义或变量声明语句中指定n,则默认长度为1.

您可以使用:

print @sqlText

看看你的陈述是什么样的.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有