私はその配列をループし、それを私のクエリのNOT IN部分で使用したいと思います。 問題は3つのレコードを返します。それは2を返す必要があります。 私の問題はどのように私はpl/sqlで配列を処理しているpl/sqlで文字列を構成するf
答えて
まず、javaで構築する文字列の最後に余分なカンマがあります。フラグを使用して削除することができます。
String separator = "";
for(String s : tableNamesToExclude){
sb.append(separator).append("'").append(s.replace("'", "''")).append("',");
separator = ",";
}
このように、最初の要素を除くすべての要素の前にセパレータ '、'が追加されます。
第2に、tablenames変数で終わる文字列は、javaで構築した文字列とまったく同じです(dbms_output.put_line関数を使用して検証できます)。したがって、 "not in"演算子は、この文字列と同じ名前のテーブルが存在するかどうかをチェックしますが、これは失敗します。
私はあなたの問題の厳密解がここで説明されていることを考える:https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:110612348061
あなたは私はあなたが必要な出力を実現することが可能な技術のいくつかを説明しようとしていPLSQLをタグ付けしたよう。スニペットの下の希望が役立ちます。
var p_ref refcursor;
SET serveroutput ON;
DECLARE
TYPE lv_var
IS
TABLE OF VARCHAR2(100);
lv_tab lv_var;
lv_str VARCHAR2(100);
--Schema level object
lv_num NUMBER_NTT;
--Schema level object
BEGIN
SELECT LEVEL ||'AV' BULK COLLECT INTO lv_tab FROM DUAL CONNECT BY LEVEL < 10;
--There are two ways in whcih you can loop
-- 1 Just try to make a string whcih can be used in IN clause
FOR I IN lv_tab.FIRST..lv_tab.LAST
LOOP
lv_str:=lv_str||','''||lv_tab(i)||'''';
END LOOP;
dbms_output.put_line(SUBSTR(lv_str,2,LENGTH(lv_str)));
--This lv_str can be used in any NOT IN condition
--2 WAY is bit more efficient but here in this case you wont bwe able to do it via PLSQL object. We need
-- to create a schema level nested table object then then use it in NOT IN clause
SELECT LEVEL BULK COLLECT
INTO lv_num
FROM DUAL
CONNECT BY LEVEL < 2;
OPEN :p_ref FOR SELECT * FROM
(SELECT 1 NM FROM DUAL
UNION
SELECT 2 NM FROM DUAL
UNION
SELECT 3 NM FROM DUAL
)A WHERE A.NM NOT IN
(SELECT COLUMN_VALUE FROM TABLE(lv_num)
);
END;
print p_ref;
私はそれを理解しました。私がする必要があったのは:tc.table_name NOT IN(SELECT * FROM table(names)); – icelated
Ohkだから、もしそれが助けてくれれば答えを受け入れることができれば、他の人にも役立つでしょう。 –
- 1. 動的文字列PLSQLを構築する方法
- 2. ハウツー文字配列を構成する
- 3. 具体的な構文 - F-Alloyの文字列concat
- 4. PLSQLカーソル内にコンマで区切られた文字列リストを生成する
- 5. 通常の文字列からf-stringsを作成する
- 6. plsqlループ内でOracleに文字列を追加する
- 7. F#コンストラクタで<文字列>、str>
- 8. PythonのF文字列接頭辞に構文エラーがあります
- 9. 文字列で構成される行を削除する
- 10. PLSQL特殊文字は
- 11. javascript特殊文字で構成された文字列を置換する
- 12. F#のコンストラクタ構文
- 13. F#文字列をintに変換
- 14. アンドロイドで文字列を構成する方法
- 15. Arduinoの数字と文字で構成される文字列のハッシュを生成する
- 16. 文字列の構成はC#
- 17. PLSQLのURLパスセグメント文字列を抽出します。
- 18. F#:文字列をバイト配列に変換する
- 19. F#で文字列を反復するには?
- 20. シンプルPLSQL(オラクル)構文の質問
- 21. 文字列補間:FまたはS
- 22. F#の文字列の書式 - 二回
- 23. F#:クエリ文字列に記録
- 24. C#とPLSQL - RegExpによるコメントと文字列の検索
- 25. なぜf文字列でヘキシフィード化するより速く%でヘリコライズする文字列ですか?
- 26. BAT:〜文字列の構文
- 27. 他のさまざまな文字列で構成される文字列を検索するPython
- 28. プレースホルダ文字で文字列を作成
- 29. 構成された文字列を使用する
- 30. 文字列を構成する(変数+テキスト)
私はその例を使ってそれを理解できません。申し訳ありません。 – icelated
オクラホマ、私は理解していると思う...あなたはoracleでjava stringbuilderの結果を使わないで... – Igor
ループの後にtablenamesの値を表示できますか? – Igor