oracle的function和procedure返回值给shell
本文演示两个关于如何在shell中调用oracle的function和procedure,并将返回值返回给shell。
1、首在package中创建function和procedure,脚本如下:
GET_BIZ_DATE: 通过pl/sql的function拿到sysdate,并返回
GET_DATE_DIFF:通过pl/sql的procedure,在对给定的一个时间的基础上加分钟,即简单时间加减,并返回运算后的时间
create or replace package mypkg as
function get_biz_date return varchar2;
procedure get_date_diff(v_date1 in varchar2, v_diff in number, v_date2 out varchar2);
end mypkg;create or replace package body mypkg as
function get_biz_date return varchar2 as
v_date varchar2(20);
begin
select sysdate into v_date from dual;
return v_date;
end get_biz_date;procedure get_date_diff(v_date1 in varchar2, v_diff in number, v_date2 out varchar2) as
begin
v_date2 := '';
select to_char(to_date(v_date1,'YYYY-MM-DD hh24:mi') + v_diff / (24 * 60),'yyyymmdd hh24:mi') into v_date2 from dual;
sys.dbms_output.put_line(v_date2);
end get_date_diff;
end mypkg;
2、创建shell脚本
1)shell调用function的脚本:
[oracle@toughhou shell]$ cat function.sh
#!/bin/bash
str=`sqlplus -s scott/scott@ORCL_SIT <<EOF
set heading off
set pagesize 0;
set feedback off;
set verify off;
set echo off;select MYPKG.GET_BIZ_DATE from dual;
exit
EOF`echo $str
function有一个返回值,我们可以通过"select function_name() from daul"语句取到返回值,并放入shell变量中。
2)shell调用procedure的脚本:
[oracle@toughhou shell]$ cat procedure.sh
#!/bin/bash
out=/home/oracle/shell/out.log
v_date1='2010-12-31 23:30'
v_diff=31sqlplus -s scott/scott@ORCL_SIT > $out <<EOF
set heading off
set feedback off;
set verify off;
set echo off;
set serveroutput onvar v_date varchar2;
call MYPKG.GET_DATE_DIFF('$v_date1',$v_diff,:v_date);exit
EOFecho `cat $out`
我们的procedure有一个out变量,我们通过dbms_output.put_line()函数打印变量,在sqlplus连接时设置set serveroutput on,且把sqlplus信息重定向到out.log文件中。最后通过cat out.log得到out变量的值。
3、测试结果
[oracle@toughhou shell]$ sh function.sh
23-NOV-13
[oracle@toughhou shell]$ sh procedure.sh
20110101 00:01
测试结果如预期,测试成功!
oracle的function和procedure返回值给shell的更多相关文章
- 怎样获取shell函数的返回值及shell命令的返回值?
1.获取shell函数调用的返回值: #!/bin/sh info() { cat jlb.sh } res=`info` echo "state: "$? echo " ...
- java 调用 oracle的function 和 procedure
1.调用函数 CallableStatement cs=con.prepareCall("{?=call get_pname(?,?,?)}"); 第一个?表示返回的值,后面的?可 ...
- oracle中的function 、procedure、packages、package bodies比较
1 function和procedure的区别 1).可以理解函数是存储过程的一种 2).函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值 3).函数return返回值没 ...
- C# ODP.NET 调用Oracle函数返回值时报错的一个解决方案
有人在社区问到:C#调用Oracle中自定义函数的返回值时,无法正常调用.但在PL/SQL中正常调用返回. 于是动手一试: 1.准备函数(Oralce 11g.2.0.0.4) CREATE OR R ...
- function返回值Python特殊语法:filter、map、reduce、lambda
废话就不多说了,开始... Python内置了一些非常有趣但非常有用的函数,充分体现了Python的语言魅力! filter(function, sequence):对sequence中的item顺次 ...
- Shell入门教程:Shell函数的返回值
shell函数返回值一般有3种方式: 1.return语句(默认的返回值) shell函数的返回值可以和其他语言的返回值一样,通过return语句返回. 比如: #!/bin/bash functio ...
- Shell函数:Shell函数返回值、删除函数、在终端调用函数
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: f ...
- Shell函数返回值、删除函数、在终端调用函数
Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: function_name () { list of commands [ return value ] ...
- AJAX JQuery 调用后台方法返回值(不刷新页面)
AJAX JQuery 调用后台方法返回值(不刷新页面) (1)无参数返回值(本人亲试返回结果不是预期结果) javascript方法: $(function () { //无 ...
随机推荐
- oracle的控制语句if和循环语句loop while for
pl/sql的控制结构if-then if-then-else if-then-elsif-else 案例1:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该雇员工资增加10% ...
- oracle数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1)
数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1) 文档内容 用途 详细信息 Patchsets ...
- LeetCode 242
Valid Anagram Given two strings s and t, write a function to determine if t is an anagram of s. For ...
- [改善Java代码]不要在finally块中处理返回值
在finally代码块中处理返回值,这是在面试题中经常出现的题目.但是在项目中绝对不能再finally代码块中出现return语句,这是因为这种处理方式非常容易产生"误解",会严重 ...
- 谈谈JavaScript事件
众所周知,web前端包含三个基本技术:html.css和javascript.三者融合,才让网页变得精彩纷呈!如今,web上的操作越来越趋于复杂,JavaScript事件在网页中也遍地开花,有时候也是 ...
- Git - Download for Linux and Unix
It is easiest to install Git on Linux using the preferred package manager of your Linux distribution ...
- 【转载】Spark SQL 1.3.0 DataFrame介绍、使用
http://www.aboutyun.com/forum.php?mod=viewthread&tid=12358&page=1 1.DataFrame是什么?2.如何创建DataF ...
- Ubuntu系统应用程序创建快捷方式的方法
大家安装了最新版的Ubuntu 14.0系统之后可能觉得很不习惯,因为Ubuntu的桌面干干净净没有任何快捷方式,任务栏的图标拖不下来,右键点击程序图标也没有创建快捷方式的菜单选项: 那如何把自己经常 ...
- 【Cocos2d入门教程七】三分钟看懂Cocos2d坐标系
无论是搞2d还是3d开发,最需要搞清楚的就是坐标系,这部分混乱的话就没啥搞头了.所以玩cocos2d,一上来就需要先把各种与坐标有关的东西搞清楚. 1.OpenGL坐标系 Cocos2d-x使用的是O ...
- Activity Launch Mode
launcherMode Activity如何被启动呢?Intent对象中与Activity启动相关的标志(FLAG_ACTIVITY_*)有四个.它们分别是: "standard" ...