配列を単一の引数としてシェルスクリプトからPL/SQLスクリプトに渡し、インデックスを使用してPL/SQLスクリプトの配列要素にアクセスしようとします。どうすればこれを達成できますか?plsqlスクリプトでの配列処理
4
A
答えて
3
これを行う方法の1つです。シェル配列をスペースで区切られた文字列としてストアドプロシージャに渡し、それをコレクションに変換します。これにはさまざまな方法があります。この例では、私は内蔵のapex_util
パッケージの機能を使用します。
create or replace procedure p1(p_list in varchar2)
is
l_array apex_application_global.vc_arr2;
begin
-- convert p_list varchar2 sting to a collection
l_array := apex_util.string_to_table(p_list, ' ');
-- iterate through the collection and print each element
for i in l_array.first..l_array.last loop
dbms_output.put_line(l_array(i));
end loop;
end;
:
array[0] = 'a'
array[1] = 'b'
array[2] = 'c'
sqlplus testlab/[email protected] <<EOF
set serveroutput on
exec p1('${array[*]}');
EOF
結果:
SQL> exec p1('a b c');
a
b
c
PL/SQL procedure successfully completed
1
をここで
は、プロシージャ(関数であるかもしれない、それはあなた次第です)です下記のOracle
の方法をご覧ください。私は、collection
(varcharの配列)と定義されたOracleを使用しました。独自のコレクションを作成して同様の方法で渡すことができます。
--- using oracle defined collection for varchar2
CREATE OR REPLACE procedure array_list_pass_proc(v_acct5 sys.odcivarchar2list)
as
begin
for i in 1..v_acct5.count -- Passing the array list to loop
loop
--Printing its element
dbms_output.put_line(v_acct5(i));
end loop;
end;
/
出力:
SQL> execute array_list_pass_proc(sys.odcivarchar2list('0001','0002','0003'));
0001
0002
0003
PL/SQL procedure successfully completed.
+1
質問をもう一度読んでください - OPは配列を受け入れるプロシージャの作成方法ではなく、シェルスクリプト*からPL/SQLに配列*を渡す方法について質問しました。 –
関連する問題
- 1. PLSQL例外処理
- 2. PLSQLでCLOBデータを処理するメールプロシージャ
- 3. Javaでの配列処理
- 4. Javaスクリプトで配列内の配列を反復処理する方法
- 5. IN()句の配列oracle PLSQL
- 6. spring&plsqlストアドプロシージャ - 例外処理とトランザクション
- 7. Pythonの配列処理
- 8. Matlab配列の処理
- 9. 配列の処理 - Python
- 10. Rubyでインターコム用の配列を処理するバッチ処理
- 11. cでの文字配列の処理
- 12. Powershellスクリプトからの文字列処理
- 13. アレイ配列内でのループ処理
- 14. 電力クエリでの配列処理
- 15. 2次元配列処理
- 16. 処理エラーオーバーループ配列要求
- 17. Javascript配列格納処理
- 18. Vbスクリプトでのエラー処理
- 19. JavaでPLSQL例外を処理する正しい方法
- 20. Scalaのカフカメッセージバイト配列の処理
- 21. アクセステーブル内の配列の処理方法
- 22. 配列内のヌルオブジェクトの処理
- 23. Backbone.js配列の属性の処理
- 24. Node.jsの配列の非同期処理
- 25. サブセットの処理 - 配列の相違
- 26. DB2、PLSQL:私のスクリプトは
- 27. PLSQLスクリプトの最適化/チューニング
- 28. Symfony2配列から文字列への変換時のエラー処理エラー処理
- 29. GameMonkeyスクリプト混合配列の理解
- 30. RXJS - アイテムの配列を処理する
あなたの2番目のコードスニペットは、シェルスクリプトではなく、 '$'は、シェルプロンプトを示し、対話型セッションが(それは私のカップルを取ったことは注目に値するかもしれません'$ array [0]'が間違って型付き '$ array [0]'のように見えるので、それは私の愚かさかもしれません。 –
bashでは、より単純な方法で配列を定義することもできます: 'array =(a b c)' –
@FrankSchmittシェルプロンプトを削除しました。はい、配列のインデックスに入力ミスがありました。ありがとうございます。 –