gpt4 book ai didi

sql - 变量在 IF NOT EXISTS .. CREATE TABLE 查询中不起作用,我不知道为什么

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

我正在使用 Azure SQL 数据库 (T-SQL),但在“CREATE TABLE IF NOT EXISTS”查询时遇到问题。我已经阅读了这里的链接,可能还有其他一些链接:

我的代码:

declare @tableName nvarchar(max);
declare @sqlquery nvarchar(max);
SET @tableName = 'Russ';
SET @sqlquery = 'if not exists (select * from sysobjects where name=' + @tableName + 'and xtype=''U'') create table ' + @tableName + '([ID] [bigint] PRIMARY KEY NOT NULL DEFAULT (NEXT VALUE FOR dbo.standardsequence), [Name One] [nvarchar](64) NOT NULL, [Name Two] [nvarchar](64) NOT NULL)';
exec sp_executesql @sqlquery;
  • 我收到的错误是“xtype='U' 附近的语法错误”,但我已经转义了该部分,因此我不明白那里的问题。
  • 每个地方都说要使用 sp_executesql,我正在这样做。我还尝试在 sp_executesql 语句中设置变量(例如:EXECUTE sp_executesql @SQL、N'@tableName VARCHAR(10)'、'Russ'),但它也不起作用。
  • 查询在没有变量的情况下工作得很好,所以我很确定问题出在于此,但只是不知道为什么。

我做错了什么?我很困惑。如果有一个难住的局,他们会宣布我正式难住了。

最佳答案

表名未正确终止,额外的引号将修复它。

但是,在 sql 中使用条件语句时添加 beginend 是一个好习惯

declare @tableName nvarchar(max);
declare @sqlquery nvarchar(max);
SET @tableName = 'Russ';
SET @sqlquery = 'if not exists (select * from sysobjects where name=''' + @tableName + ''' and xtype=''U'')
begin
create table ' + @tableName + '([ID] [bigint] PRIMARY KEY NOT NULL DEFAULT (NEXT VALUE FOR dbo.standardsequence), [Name One] [nvarchar](64) NOT NULL, [Name Two] [nvarchar](64) NOT NULL)
end';

exec sp_executesql @sqlquery;

关于sql - 变量在 IF NOT EXISTS .. CREATE TABLE 查询中不起作用,我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58515494/

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