gpt4 book ai didi

sql-server - SQL Server : Syntax near keyword 'CREATE' when batch executing CREATE SCHEMA and CREATE TABLE

转载 作者:行者123 更新时间:2023-12-01 16:51:36 30 4
gpt4 key购买 nike

我正在尝试使用 JDBC(最新版本)设置 SQL Server 2008 数据库。
我有一个我想一起执行的 setup sql 命令列表:

基本上我做的是:

connection.setAutoCommit(true);
stmt = connection.createStatement();
stmt.addBatch("CREATE SCHEMA test")
stmt.addBatch("CREATE TABLE test.a (x integer)")
stmt.executeBatch();

这抛出:
Incorrect syntax near the keyword 'CREATE'.

如果我分别执行这些命令,它们会按预期工作。我需要在这里添加一个提交(比如 stmt.addBatch("COMMIT")?我没有运行事务,所以这不是必要的。

此外,这不是说测试模式不存在的错误——这是一个语法错误,这让我感到困惑。

文档仅提供 DML 命令作为 addBatch 的示例,但我相信批处理不仅限于 DML。

任何建议表示赞赏,谢谢!

米。

最佳答案

这是有效的 SQL

CREATE SCHEMA test
CREATE TABLE test.a (x integer)

这是有效的
CREATE SCHEMA test
GO
CREATE TABLE test.a (x integer)

这是无效的
CREATE SCHEMA test;
CREATE TABLE test.a (x integer);

错误是
Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'create'.

原因是 create schema必须在它自己的批次中(感谢 Ben 指出这一点)。 GO是一个批处理分隔符,所以没关系。 ;是批处理中的语句分隔符,这是不行的。第一个代码是有效的,因为 create table声明是 create schema 的一部分陈述。它们与一条语句在同一事务中运行。

我的猜测是 addBatch附加一个 ;在每个语句的末尾。只需调用一次 addBatch与整个 create schema声明包括 create table .

关于sql-server - SQL Server : Syntax near keyword 'CREATE' when batch executing CREATE SCHEMA and CREATE TABLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5051245/

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