0
複数のデータベースにまたがる特定のレコードを検索し、残りのすべてにアクセスできるマスターDBに挿入するクエリを作成しています。db_linkを使って挿入すると無効な識別子エラーが発生する
しかし、セレクタがうまく動作しても、挿入が失敗すると、存在しないシノニムを使って無効な識別子が返されます。
問合せ:
INSERT INTO AUDIT_TABLE
Select Distinct tr.hmy, trim(tr.uref), tr.stotalamount, tr.upostdate, tr.sdateoccurred
,trunc(tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1)
,trim(v.ucode)
,trim(v.ulastname)
,trim(p.scode)
,trim(p.saddr1)
,trim(b.scode)
,trim(b.sdesc)
,l.icloseday
, case when l.icloseday <> 31 then trunc(tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1) + (l.icloseday - 1) else last_day(trunc(tr.sdateoccurred)) end
, case when l.icloseday <> 31 then
case when trunc(tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1) + l.icloseday <= trunc(tr.sdateoccurred) then add_months((tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1),1)
else trunc(tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1) end
else trunc(tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1) end
,trim(u.uname)
,''
from [email protected]_link tr
join [email protected]_link d on d.hchkorchg = tr.hmy
join [email protected]_link v on tr.haccrualacct = v.hmyperson
join [email protected]_link p on p.hmy = d.hprop
and p.itype = 3
join [email protected]_link b on b.hmy = tr.hperson
join [email protected]_link u on u.hmy = tr.husercreatedby
join [email protected]_link l on l.hprop = p.hmy
where
1=1
and tr.itype = 2
and tr.manualcheck <> 0
and tr.sdatecreated between to_date(trunc(sysdate, 'YEAR')) and to_date(add_months(trunc(sysdate, 'YEAR'), 12)-1)
and case when l.icloseday <> 31 then
case when trunc(tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1) + l.icloseday <= trunc(tr.sdateoccurred) then add_months((tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1),1)
else trunc(tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1) end
else trunc(tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1) end <> trunc(tr.UPOSTDATE)
エラー:
ORA-00904: "A2"."HUSERCREATEDBY": invalid identifier
ORA-02063: preceding line from db_link
奇妙な部分:すべてのこれらのデータベースは、同じスキーマだけそれらのいくつかは、このエラー私はループを通過して失敗を持っていますすべて。
アップデート2017年11月14日:そこにもっと探し
、私が2つの以下の条件のいずれかを排除する場合INSERTは全く問題はありませんが、私は彼らを見て、ドン」続けるようです単純なSELECTに問題がないときにエンジンがなぜこの2つの理由でエラーになるのか分かりません。
and tr.sdatecreated between to_date(trunc(sysdate, 'YEAR')) and to_date(add_months(trunc(sysdate, 'YEAR'), 12)-1)
または
それでもand case when l.icloseday <> 31 then
case when trunc(tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1) + l.icloseday <= trunc(tr.sdateoccurred) then add_months((tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1),1)
else trunc(tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1) end
else trunc(tr.sdateoccurred) - (to_number(to_char(tr.sdateoccurred ,'DD')) - 1) end <> trunc(tr.UPOSTDATE)
権限が不足しているように見えます。他のユーザーに選択アクセスを許可する必要があります。 – XING
しかし、挿入せずに選択を実行しても問題はありません。エラーは、「選択」データを挿入する場合にのみ発生します。 – EkeshOkor
はい。そのため、「INSERT」権限がありません。 – XING