標(biāo)題: 請(qǐng)教,shell如何取得sql執(zhí)行的返回值 [打印本頁(yè)] 作者: angel518 時(shí)間: 2011-08-19 18:27 標(biāo)題: 請(qǐng)教,shell如何取得sql執(zhí)行的返回值 在sehll腳本中,有如下sql語(yǔ)句
select count(*) from A
insert into B select * from A;
當(dāng)上面的sql執(zhí)行后,接下來(lái)處理上面的返回值,該怎么取啊
resultlist=`sqlplus -S user/passwd@tns<<EOF
set serveroutput on
declare
v_a integer;
v_b integer;
v_c integer;
begin
select count(1) into v_a from ta;
select count(1) into v_b from tb;
select count(1) into v_c from tc;
dbms_output.put_line(v_a||chr(10)||v_b||chr(10)||v_c);
end;
/
exit
EOF`
為什么要使用chr(10)?因?yàn)榭赡苣J(rèn)的sqlplus的默認(rèn)設(shè)置的glogin.sql里面的linesize設(shè)置為80。如果你求的值比較多可能會(huì)有點(diǎn)小問(wèn)題。然后如果要解析resultlist的結(jié)果,可以使用for來(lái)解析,可以設(shè)置shell的IFS來(lái)設(shè)定delimiter.
PS:曾經(jīng)使用過(guò)shell來(lái)設(shè)計(jì)過(guò)不同DB系統(tǒng)的數(shù)據(jù)對(duì)比系統(tǒng)。不過(guò),DB的連接和斷開(kāi)問(wèn)題始終是頭疼的問(wèn)題。最終還是通過(guò)PYTHON來(lái)實(shí)現(xiàn),因?yàn)閹Ц鞣NDB API,易于實(shí)現(xiàn)。樓上有同志說(shuō)的perl DB API應(yīng)該也是PYTHON的發(fā)源地。作者: angel518 時(shí)間: 2011-08-22 08:46