は、このテーブルMYTEMPから、このクエリと間違っているものを私に教えてください、選択した列の データは、カーソルインライン・ビューのクエリ
DELETE FROM (SELECT ROWNUM RM, S from mytemp) where rm > 20;
エラーを使用して取り込まれていました次のとおりです。
ORA-01732:このビュー精度のため
は、このテーブルMYTEMPから、このクエリと間違っているものを私に教えてください、選択した列の データは、カーソルインライン・ビューのクエリ
DELETE FROM (SELECT ROWNUM RM, S from mytemp) where rm > 20;
エラーを使用して取り込まれていました次のとおりです。
ORA-01732:このビュー精度のため
編集上のデータ操作操作法的ません...ここで
がDESCRですhttp://ora-01732.ora-code.com/
を試みはUPDATE、INSERTを使用するように作られた、または式または関数が含まれてい ビューにDELETE文または1つ以上 から派生した:あなたが取得しているエラーのiption表。ビューを作成するために結合操作を使用した場合、または ビューに関数または式から派生した仮想列が含まれている場合は、 のビューにしか問合せできません。
したがって、複数のテーブルを結合したり、仮想列を使用したりしない限り、更新可能なビューをテーブルに置き換えることができます。あなたの場合、問題は仮想ROWNUM列です。
ありがとう、しかし、私たちは 'rownum> 20'を使うことができますか、それは常にfalseを返します...私はインラインビューを使用して選択することしかできません。インラインビューを使用してデータ操作を行うことはできません.. – ratsy
あなたはそうです、それは悪い解決策でした。私は私のポストを編集して、なぜ機能しないのかを説明し、欠陥のあるSQLを取り除きました。 –
Danimalに感謝します。私はまだ理解していません。仮想rownumカラムは何ですか?私はインラインビューがrwnum列のための 'rm'として出力を与えることを意味し、次にrm値が20より大きいそれらのレコードを削除しています..この仮想rownumについてもう一度説明してください..thanks again – ratsy
rownum>20
です。
ROWNUM> xここで、xの値は正の整数よりも大きく、常にfalseです。
select * from ANYTABLE where rownum>(ANY POSITIVE INTEGER)
はレコードを返しません。
フェッチされた最初の行には、ROWNUMが1に割り当てられ、条件は偽になります。フェッチされる2番目の行が最初の行になり、1のROWNUMが割り当てられ、条件がfalseになります。その後、すべての行が条件を満たさないため、行は戻されません。
チェックTHIS詳細については、
次の操作を行うことができます
delete from (select amount from TABLE t where t.amount=1000)
が、それは。DELETE FROM
delete from TABLE where amount=1000
thnx bonsvr、ya knowこれは私がしたいのは、インラインビューを使ってsoemレコードを削除することです。実際のカラムとしてrownumを作成することで、インラインビューnを選択することができます。 – ratsy
@ratsyはいできます。 'alter table mytemp add row_col number; update mytemp set row_col = rownum; ' – bonsvr
ありがとうございましたbonsvr、ありがとうございましたtiemのために私の目的を解決しました:)ありがとう...しかし私はまだインラインビューを使って削除できないかどうかを知りたい – ratsy
と同じだテーブルの名前は... 'WHERE MYTEMP。DELETE FROM ...'多分期待しますか? –
大丈夫ですので、インラインビューから削除することはできませんか? – ratsy