【问题标题】:Db2 sqlcode -20186db2 sqlcode -20186
【发布时间】:2019-01-25 21:47:27
【问题描述】:

我试图在 db2 中运行一个简单的插入语句,但得到无效的语句:

我的 sql:

insert into schema1.table1 select * from schema2.table1

错误:

SQLCODE = -20186,错误:为动态 SQL 指定的子句;正在处理的声明无效

我通过ibm知识中心找到了this page

我了解 db2 允许 3 种插入形式: 该语句的三种形式:

  1. INSERT via VALUES 表单用于使用提供或引用的值将单行插入到表或视图中。

  2. INSERT via SELECT 表单用于使用来自其他表或视图或两者的值将一行或多行插入到表或视图中。

  3. INSERT via FOR n ROWS 表单用于使用提供或引用的值将多​​行插入到表或视图中。

我的问题是为什么 db2 在我的查询中寻找“for n rows”子句。

注意:此查询是通过 SSGODBC 发送的。

【问题讨论】:

  • 检查 到达 Db2 的 SQL,与您提供给 SSGODBC 的 SQL 不同,以防 SSGODBC 在将 SQL 提交到 Db2 引擎之前以某种方式对其进行转换。还要提及您的 Db2 服务器*操作系统*(z/os、i 系列、linux/unix/windows)和 Db2 版本。

标签: sql db2


【解决方案1】:

可能想尝试明确说明列。

INSERT INTO Schema1.table1 (col1,col2,...) SELECT col1,col2,... FROM Schema2.table2 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多