Oracle活用 SQL実行時に引数を渡す
おうちのマンションの目の前で花火が上がったよー!!!
めっちゃ綺麗!!
SQLに引数を渡して実行したい!
意外とみんなやらないんだよね、なんでだろう。
引数の必要なSQLファイルを作成。
引数のところは&1、&2…とする。
test_Argument.sql
select to_date('&1','yyyymmdd') from dual; select to_number('&2') + to_number('&3') from dual; select * from departments where departmenr_id = '&4';
実行するよー!
引数は実行するSQLファイルの後ろに半角スペースで区切って渡すのよ!
21:31:44 SQL> conn hr/hr@xe 接続されました。 21:31:47 SQL> @C:\Users\SAKURI\sql\test_Argument.sql 20150805 10 50 150 旧 1: select to_date('&1','yyyymmdd') from dual 新 1: select to_date('20150805','yyyymmdd') from dual TO_DATE( -------- 15-08-05 旧 1: select to_number('&2') + to_number('&3') from dual 新 1: select to_number('10') + to_number('50') from dual TO_NUMBER('10')+TO_NUMBER('50') ------------------------------- 60 旧 2: where department_id = '&4' 新 2: where department_id = '150' DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID ------------- ------------------------------------------------------------ ---------- ----------- 150 Shareholder Services @ 1700 21:31:50 SQL>
ちゃんと引数渡す前と、受け取った後が[旧][新]で表示されるのでわかりやすい!
引数が足りないと、対話式になるので注意!
21:34:34 SQL> @C:\Users\SAKURI\sql\test_Argument.sql 20150805 10 旧 1: select to_date('&1','yyyymmdd') from dual 新 1: select to_date('20150805','yyyymmdd') from dual TO_DATE( -------- 15-08-05 3に値を入力してください: 30 旧 1: select to_number('&2') + to_number('&3') from dual 新 1: select to_number('10') + to_number('30') from dual TO_NUMBER('10')+TO_NUMBER('30') ------------------------------- 40 4に値を入力してください: 200 旧 2: where department_id = '&4' 新 2: where department_id = '200' DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID ------------- ------------------------------------------------------------ ---------- ----------- 200 Operations @ 1700 21:35:03 SQL>
これを使った応用を…
ま、まぁそのうちに……。