单引号参数在传递给oracle函数并从shell脚本调用时转换为双引号参数

时间:2015-03-18 11:12:47

标签: oracle shell

我正在尝试从shell脚本执行一个oracle函数。 这个函数只需要两个字符串参数并返回它们的连接字符串。 这是oracle函数

create or replace package temp as
    function getName(v_fname in varchar2, v_lname varchar2) return varchar2;
end temp;

create or replace package body temp as
    function getName(v_fname in varchar2, v_lname in varchar2) return varchar2 is
    v_fullname varchar2(17);
    begin
        --DBMS_OUTPUT.PUT_LINE(v_name);
        v_fullname := concat(v_fname,v_lname);
        return v_fullname;
    end getName;
end temp;
/

这是shell脚本的片段

fullname=$(sqlplus -s myuser/password@DBinstance << !
set heading off
set feedback off
SELECT TEMP.GETNAME('Vishal','Tavande') FROM DUAL;
!)
echo $fullname

当我在Oracle中执行SELECT TEMP.GETNAME('Vishal','Tavande') FROM DUAL时,我可以将结果作为'VishalTavande';但是当我在Shell中执行它时,我得到的是

  

fullname = SELECT TEMP.GETNAME(“Vishal”,“Tavande”)FROM DUAL ERROR at   第1行:ORA-00904:“Vishal”:标识符无效

任何帮助都非常明显。 感谢

0 个答案:

没有答案