配列を単一の引数としてシェルスクリプトから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. Javaでの配列処理
- 2. Javaスクリプトで配列内の配列を反復処理する方法
- 3. IN()句の配列oracle PLSQL
- 4. spring&plsqlストアドプロシージャ - 例外処理とトランザクション
- 5. Matlab配列の処理
- 6. Rubyでインターコム用の配列を処理するバッチ処理
- 7. cでの文字配列の処理
- 8. 処理エラーオーバーループ配列要求
- 9. Javascript配列格納処理
- 10. 2次元配列処理
- 11. アレイ配列内でのループ処理
- 12. Vbスクリプトでのエラー処理
- 13. JavaでPLSQL例外を処理する正しい方法
- 14. DB2、PLSQL:私のスクリプトは
- 15. Node.jsの配列の非同期処理
- 16. 配列内のヌルオブジェクトの処理
- 17. サブセットの処理 - 配列の相違
- 18. Backbone.js配列の属性の処理
- 19. Symfony2配列から文字列への変換時のエラー処理エラー処理
- 20. PHPの配列処理質問
- 21. PostgreSQL jsonと配列の処理
- 22. 2D配列の処理/初期化(Java)
- 23. バッチ処理numpyの配列インデックス
- 24. マスキングされたnumpy配列の処理
- 25. excel javascript API配列の処理
- 26. 配列の配列を反復処理する方法
- 27. Powershell:スクリプトのエラー処理
- 28. bsubの後処理スクリプト
- 29. Javaバイト配列とDataOutputStream処理
- 30. node.js並列処理用R配管パッケージ
あなたの2番目のコードスニペットは、シェルスクリプトではなく、 '$'は、シェルプロンプトを示し、対話型セッションが(それは私のカップルを取ったことは注目に値するかもしれません'$ array [0]'が間違って型付き '$ array [0]'のように見えるので、それは私の愚かさかもしれません。 –
bashでは、より単純な方法で配列を定義することもできます: 'array =(a b c)' –
@FrankSchmittシェルプロンプトを削除しました。はい、配列のインデックスに入力ミスがありました。ありがとうございます。 –