我需要编写一个简单的 shell 函数,从 Oracle DB 中返回单个字段。把它想象成例子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')通过管道传输到一个 shell 变量中,然后该函数返回该变量并可以从其他 shell 脚本中调用。不幸的是,sqlplus 返回一大堆垃圾,例如顶部的“Welcome to Oracle”和底部的“Disconnected...”。
如何从 SQL 结果集中提取数据,或者在这种情况下提取单个值并将其传递给 UNIX 变量,以便在 shell 中进行进一步操作?
谢谢