我正在使用IBM System i版本7.1。
我在合併語句中更新多個列時遇到問題。設置一個欄時
下面的語句的工作原理:
merge into database.table as t
using (values(
cast(99 as smallint)
,cast('dave' as varchar(40))
))
as caz(
group_id
, group_name
)
on t.group_id = caz.group_id
when matched then update
set t.group_name = caz.group_name
when not matched then
insert (
group_id
, group_name
)
values (
caz.group_id
, caz.group_name
);
相同的語句,當我添加一組附加線不再起作用:
merge into database.table as t
using (values(
cast(99 as smallint)
,cast('dave' as varchar(40))
,cast(1 as smallint)
))
as caz(
group_id
, group_name
, queued_calls_above_tasa
)
on t.group_id = caz.group_id
when matched then update
set t.group_name = caz.group_name,
set t.queued_calls_above_tasa = caz.queued_calls_above_tasa
when not matched then
insert (
group_id
, group_name
, queued_calls_above_tasa
)
values (
caz.group_id
, caz.group_name
, caz.queued_calls_above_tasa
);
我收到以下錯誤信息:
作爲t合併到database.table中使用(values(ca ST(99作爲SMALLINT),澆鑄( '戴夫' 爲varchar(40)),澆鑄(1作爲 SMALLINT)))作爲CAZ(
GROUP_ID,組名,queued_calls_above_tasa)上
t.group_id = caz.group_id時匹配然後 更新設定t.group_name = caz.group_name,設置 t.queued_calls_above_tasa = caz.queued_calls_above_tasa
當不匹配時,然後插入(GROUP_ID, GROUP_NAME,queued_calls_above_tasa)
值(caz.group_id,caz.group_name, caz.queued_calls_above_tasa)SQL狀態:42601
供應商代碼:-104
消息:[SQL0104]令牌T無效。有效令牌:=。原因。 。 。 。 。 :在令牌T處檢測到語法錯誤。令牌T不是 有效令牌。有效令牌的部分列表是=。此列表假定 該聲明在令牌之前是正確的。聲明中前面的錯誤可能爲 ,但聲明的語法似乎爲 直到此時纔有效。恢復。 。 。 :執行一個或多個 並再次嘗試請求: - 驗證令牌T的區域 中的SQL語句。更正語句。錯誤可能是 缺少逗號或引號,可能是拼錯的單詞,或者它可能與子句的順序有關。 - 如果錯誤標記爲 ,請更正SQL語句,因爲它不會使用有效的子句結束 。處理結束,因爲高亮顯示的聲明沒有完成 成功
任何幫助表示讚賞。
請讓我知道,如果我可以提供更多的信息。
你說的不再起作用呢?你有錯誤,或者你沒有得到預期的結果? – Olga
謝謝你;我編輯了問題以包含我收到的錯誤消息詳情。 – HappyCoding