Oracle
使用 sqlplus 綁定變數和 shell 腳本
我希望使用帶有 shell 腳本的綁定變數來執行 DML。例如,類似:
#!/bin/bash SH_NUM=10 sqlplus -S test_user/test_pass <<EOD var a number; a:=${SH_NUM} insert into test_table values(a); commit; EOD
我不確定這是否可行,我可以在使用 pl/sql 時使用這種方法,但我想知道我是否也可以使用這種方法。
當然有可能:
[oracle@o71 ~]$ cat 1.sh #!/bin/bash SH_NUM=10 sqlplus -S bp/bp<<EOD set lines 220 pages 5000 col plan_table_output format a50 var a number; exec :a :=${SH_NUM}; insert into t1 values(:a); commit; select * from table(dbms_xplan.display_cursor(format=>'basic')); exit EOD
執行它(我只是放在
DBMS_XPLAN.DISPLAY_CURSOR
那裡查看執行的最後一條語句):[oracle@o71 ~]$ ./1.sh 1 row created. Commit complete. PLAN_TABLE_OUTPUT -------------------------------------------------- EXPLAINED SQL STATEMENT: ------------------------ insert into t1 values(:a) ----------------------------------------- | Id | Operation | Name | ----------------------------------------- | 0 | INSERT STATEMENT | | | 1 | LOAD TABLE CONVENTIONAL | T1 | ----------------------------------------- 12 rows selected.