尝试将非静态变量和检索到的值混合插入表中

时间:2019-03-06 19:58:52

标签: sql db2

因此,我尝试使用子查询将非静态变量和从另一个表获取的值的集合插入到表中。我的代码如下:

INSERT INTO SCHEMA.TAB_REQ(TABLE_I, RUN_I, CODE, ORG_ALS, TAB_CRT_S, TAB_LST_UPD_S)
SELECT :tableKey, :runKey, :code, :org, TAB.CRT_S, TAB.LST_UPD_S
FROM   SCHEMA.TABLE TAB
WHERE  TAB.KEY = :tableKey

正在获取的值TAB.CRT_S和TAB.LST_UPD_S都将是时间戳记。因此,以“ 12/3/2019 12:00:01 AM”为例。这些值都不应该为null。只要插入新行,它们就会自动生成。

提供的变量将是两个整数字符串(:tableKey和:runKey),然后是两个字符串(:code和:org)。它们是由Java应用程序提供的,如果缺少它们,则说明出现了严重错误。现在,我在运行查询时为每个变量手动输入值。

select语句应该只返回一行,因为:tableKey是自动生成的唯一标识符。

我当前的代码抛出以下错误:

ERROR [42610] [IBM][DB2] SQL0418N  The statement was not processed because the statement contains an invalid use of one of the following: an untyped parameter marker, the DEFAULT keyword, or a null value.

这是可能的,还是我在这里需要两个单独的查询?

1 个答案:

答案 0 :(得分:0)

我想出了一种简单得多的方法来做自己需要的事情。我没有尝试在单个查询中收集所有我需要的数据,而是编写了两个简单的select语句,并使用它们将多余的参数插入到Java变量中,然后再填充此SQL语句中的变量。