gpt4 book ai didi

sql - TSQL - 动态创建表和插入

转载 作者:行者123 更新时间:2023-12-03 02:02:33 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com