为什么我会收到此 SQL/DB 错误?

bar*_*oon 5 sql db2

我正在尝试使用 DB2 运行一个简单的 SQL 语句,但遇到了一些问题。我想在 txt/db2 文件中有一个脚本,并让引擎处理所有命令

这是脚本:

CONNECT TO MYDB

CREATE TABLE PERSONS(
     PID SMALLINT NOT NULL,
     NAME VARCHAR(20) NOT NULL
)

TERMINATE
Run Code Online (Sandbox Code Playgroud)

当我运行 db2 -f /pathtofile 时,我得到:

SQL0104N  An unexpected token "(" was found following "CREATE TABLE PERSONS".  
Expected tokens may include:  "END-OF-STATEMENT".  SQLSTATE=42601
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我的脚本有问题吗?另外,为什么它没有“;”就可以工作 在我的语句末尾有终止符吗?

谢谢,

eug*_*nsk 4

可能这会有所帮助,
\n http://www.uc.edu/R/r25/documentation/Version3.2/install_instructions.pdf

\n\n
\n

这些脚本使用分号 (;) 来终止每个 SQL \n 命令。如果您使用 DB2 命令行处理器,\n 您应该记住使用 \xe2\x80\x9c-t\xe2\x80\x9d 标志。
\n ...
\n 如果不使用 -t 标志,则
在运行 db2ct32.sql 脚本时将收到如下错误:
\n create table \xe2\x80\x9cACCOUNTS\xe2\x80\ x9d (
\n DB21034E 该命令被作为 SQL 语句进行处理,因为它不是
有效的命令行处理器命令。在 SQL 处理期间,它返回:
\n SQL0104N 意外标记 \xe2\x80\x9c(\xe2\x80\在 \xe2\x80\x9cate 表 \xe2\x80\x9cACCOUNTS\xe2\x80\x9d\xe2\x80\x9d 后找到 x9c。
\n 预期的标记可能包括: \xe2\x80\x9cEND-OF-STATMENT\xe2\ x80\x9d.SQLSTATE=42601

\n
\n\n

因此,我会添加分号并使用 -t 开关调用它所代表的任何废话。
\n我查看了样本,他们使用类似的东西

\n\n
db2 -tf "pathtofile"\n
Run Code Online (Sandbox Code Playgroud)\n\n

还带有

\n\n
db2 -tvf "pathtofile"\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可能会得到更多诊断。
\n不要将专有软件推向极限,它们并没有那么广泛。

\n