gpt4 book ai didi

sql - 使用动态sql创建表

转载 作者:行者123 更新时间:2023-12-01 07:19:23 24 4
gpt4 key购买 nike

我想在存储过程中使用动态 SQL 来创建表。
这是对存储过程的调用:

EXEC [spCreateAColDiffTable] 'hq193.dbo.arch_con_col_s193_s202'
以下是存储过程的相关部分:
CREATE PROCEDURE sp_createAColDiffTable (@table_name nvarchar(128))
...
SET @sSQL = 'CREATE TABLE ' + @table_name + ' ( ' +
' [table_name] VARCHAR (128) NOT NULL, ' +
' [column_name] VARCHAR (128) NULL, ' +
' [what_changed] VARCHAR (128) NULL, ' +
' [sr_data_type] VARCHAR (128) NOT NULL, ' +
' [tr_data_type] VARCHAR (128) NOT NULL, ' +
' [sr_max_length] SMALLINT NOT NULL, ' +
' [tr_max_length] SMALLINT NOT NULL, ' +
' [sr_is_nullable] CHAR NULL, ' +
' [tr_is_nullable] CHAR NULL, ' +
' [sr_precision] SMALLINT NULL, ' +
' [tr_precision] SMALLINT NULL, ' +
' [sr_scale] SMALLINT NULL, ' +
' [tr_scale] SMALLINT NULL ) ' +
' ON [PRIMARY] WITH (DATA_COMPRESSION = NONE)'
PRINT @sSQL
Exec @sSQL

当我运行存储过程时,我收到错误:

SQL Server Database Error: The name 'CREATE TABLEhq193.dbo.arch_con_col_s193_s202 ( [table_name] VARCHAR (128) NOTNULL, [column_name] VARCHAR (128) NULL, [what_changed] VARCHAR (128)NULL, [sr_data_type] VARCHAR (128) NOT NULL, [tr_data_type] VARCHAR(128) NOT NULL, [sr_max_length] SMALLINT NOT NULL, [tr_max_length]SMALLINT NOT NULL, [sr_is_nullable] CHAR NULL, [tr_is_nullable] CHARNULL, [sr_precision] SMALLINT NULL, [tr_precision] SMALLINT NULL,[sr_scale] SMALLINT NULL, [tr_scale] SMALLINT NULL ) ON [PRIMARY] WITH(DATA_COMPRESSION = NONE)'

is not a valid identifier.


请注意,在执行之前,我在存储过程中打印了 SQL。如果我剪切并粘贴打印到查询编辑器窗口中的 SQL,它工作正常。
我错过了什么?

最佳答案

像这样尝试:

EXEC(@sSQL)

这是一个非常常见的错误。没有括号, EXEC @sSQL表示“执行名称在@sSQL 变量中的存储过程”,而不是您想要的可能是“在变量@sSQL 中执行命令字符串”。

关于sql - 使用动态sql创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19227748/

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