OracleDBから単一のフィールドを返す単純なシェル関数を作成する必要があります。たとえばそれを考えてみてくださいSELECT 'ABC' FROM dual;
。ABCは私が求めているものです。
これが私の関数です:
function getSomeOraVal
{
sqlplus $USER/$PASSWD@$ORADB<<!!
SET sqlprompt ''
SET sqlnumber off
SET verify off
SET pages 0
SET echo off
SET head on
SET feedback off
SET feed off
SET serveroutput on
SET escape '\'
VARIABLE v_someVal VARCHAR2(30);
BEGIN
SELECT 'ABC' INTO v_someVal FROM dual;
END;
/
SELECT :v_someVal FROM dual;
!!
}
ただし、sqlplus出力(データのみ->'ABC')をシェル変数にパイプ処理したいのですが、この変数は関数が返し、他のシェルスクリプトから呼び出すことができます。残念ながら、sqlplusは、上部に「Welcome to Oracle」、下部に「Disconnected ...」など、大量のガベージを返します。
SQL結果セットからデータだけを抽出する方法、またはこの場合は単一の値をUNIX変数に渡して、シェル内でさらに操作する方法を教えてください。
ありがとう