【发布时间】:2020-10-12 14:06:39
【问题描述】:
我正在尝试通过 VBA 连接到 DB2。我通过 ODBC 提供程序建立了连接。
我的命令文本字符串如下所示:
strCmd = "INSERT INTO mySchema.myTable (Text) VALUES ('Test')"
当我运行它时,我得到以下运行时错误:
[IBM][CLI Driver][DB2/NT64] SQL0204N “MYSCHEMA.MYTABLE”是一个未定义的名称。 SQLSTATE=42704
我已经验证并确认 DB2 中存在模式和表。我已经验证(通过使用另一个工具 - IBM Data Studio - 凭据具有写入此表的访问权限和权限。
我的语法错了吗?有什么我想念的吗?如果我不添加“MYSCHEMA”。在表名前面,它假定我想要“ADMIN”架构,但我不想要(它甚至不存在)。
如何成功地向 DB2 LUW 执行插入命令?
【问题讨论】:
-
可能真正的表名有MiXeD CaSe。默认情况下,Db2 总是将对象名称折叠为大写,除非它们被引用。尝试双引号模式名称和对象名称。您可以在 SYSCAT.TABLES 中查看 TABSCHEMA 和 TABNAME 在数据库中 实际 的情况,您的代码应该与此匹配。
-
@mao,谢谢。这正是问题所在。我怀疑仅在构建我的表时使用 UPPERCASE 会更容易(架构已经全部大写)。通过反复试验,我还发现 DB2 表中的列名也是如此。学过的知识;或者构建一个函数来为每个 DB2 元素加上双引号,或者只使用大写来命名它们。再次感谢您!