字符串类型

   固定长度:char nchar    n 表示Unicode编码

   可变长度: varchar2 nvarchar2



数字类型:number(P,S)P:整数位数,S小数位数

          integer 整数

          BINARY_FLOAT  单浮点

          BINARY_DOUBLE 双浮点

          FLOAT(N)浮点数 N表示精度

日期类型:DATE

          TIMESTAMP





用户定义函数是存储在数据库中的代码块,能够把值返回到调用程序。调用时如同





系统函数一样,如max(value)函数,当中,value被称为參数。函数參数有3种类型。

IN 參数类型:表示输入给函数的參数。

OUT 參数类型:表示參数在函数中被赋值,能够传给函数调用程序。

IN OUT參数类型:表示參数既能够传值也能够被赋值。

1、语法格式:

SQL语法方式创建的语法格式为:



CREATE OR REPLACE FUNCTION function_name         /*函数名称*/

(

Parameter_name1,mode1 datatype1,            /*參数定义部分*/

Parameter_name2,mode2 datatype2,

Parameter_name3,mode3 datatype3



)

RETURN return_datatype                /*定义返回值类型*/

IS/AS

variable variableType;                               /*声明变量*/

BEGIN

       Function_body                  /*函数体部分*/

      RETURN scalar_expression                        /*返回语句*/

END function_name;

说明:



function_name::用户定义的函数名。

函数名必须符合标示符的定义规则。对其全部者来说,该名在数据库中是唯一的。

parameter:用户定义的參数。

用户能够定义一个或多个參数。

mode:參数类型。

datatype:用户定义參数的数据类型。

return_type::用户返回值的数据类型。

函数返回scalar_expression表达式的值。function_body函数体由pl/sql语句构成。

实例:

create or replace function getName(uid in integer) return varchar2

       as 

 username varchar2(10)

 begin

   select name into username from users where id=uid;

   return(username);

 end getName;

注意:

(1)假设函数没有參数,那么函数名后不应该要括号;在调用的时候也不须要參数名



(2)创建函数的时候end后面一定要记得写函数名



--没有參数的函数    

create or replace function get_user return varchar2 is   

  v_user varchar2(50);    

begin   

  select username into v_user from user_users;    

  return v_user;    

end get_user;   







存储过程

Oracle存储过程基本的语法 存储过程 

  1 CREATE OR REPLACE PROCEDURE 存储过程名 (參数名 类型  參数数据类型,...)

  2 IS 

  3 BEGIN 

  4 NULL; 

  5 END; 

行1: 

  CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫 做skeleton存储过程, 如      果存在就覆盖它; 

行2: 

  IS关键词表明后面将尾随一个PL/SQL体。

行3: 

  BEGIN关键词表明PL/SQL体的開始。 

行4: 

  NULL PL/SQL语句表明什么事都不做,这句不能删去,由于PL/SQL体中至少须要有一句; 

行5: 

  END关键词表明PL/SQL体的结束 



比如:

   create or replace procedure  pCountUsers(id integer,name varchar2)

   as

  begin

   insert into users(id,name) values(id,name);

  end ;



  调用:call pCountUsers(2,'KK');







函数与存储过程的差别:

   1. 返回值的差别,函数有1个返回值,而存储过程是通过參数返回的,能够有多个  或者没有

   2.调用的差别,函数能够在查询语句中直接调用,而存储过程必须单独调用.

   函数普通情况下是用来计算并返回一个计算结果而存储过程通常是用来完毕特定的数据操作(比方改动、插入数据  库表或运行某些DDL语句等等)

Oracle数据类型,函数与存储过程的更多相关文章

  1. oracle中函数和存储过程的区别和联系【转载竹沥半夏】

    oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...

  2. oracle中函数和存储过程的区别和联系

    oracle中函数和存储过程的区别和联系 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和 ...

  3. Oracle存储函数,存储过程

    一.Oracle存储函数:存储的PL/SQL语法块,完成特定的功能.1.语法: 函数关键字: function (1)创建函数 CREATE [OR REPLACE] FUNCTION <fun ...

  4. Oracle自定义函数和存储过程示例,自定义函数与存储过程区别

    参考资料:http://www.newbooks.com.cn/info/60861.html oracle自定义函数学习和连接运算符(||) 贴一段中文文档示例,应该就可以开始工作了: --过程(P ...

  5. Oracle 在函数或存储过程中执行sql查询字符串并将结果值赋值给变量

    请看黄色部分 --区县指标 THEN TVALUE_SQL := 'SELECT TO_CHAR(' || CUR_ROW.MAIN_FIELD || ') FROM ' || CUR_ROW.END ...

  6. Oracle 自定义函数、存储过程

    讲函数之前,先介绍一下程序结构 3.程序结构 新建一个测试窗口,举一个小例子 declare -- 声明变量,包括游标 begin -- 执行部分 dbms_output.put_line('hell ...

  7. Oracle分页函数(存储过程)

    create or replace package body Get_RecordByPage is StrSQL ); --分页函数 procedure GetRecordByPage(tblNam ...

  8. Oracle 在函数或存储过程中执行一条插入语句并返回主键ID值

    有时,我们需要往一张表插入一条记录,同时返回主键ID值. 假定主键ID的值都是通过对应表的SEQUENCE来获得,然后进行ID赋值 这里有几种情况需要注意: 1)如果建表语句含有主键ID的触发器,通过 ...

  9. .Net程序员学用Oracle系列(7):视图、函数、存储过程、包

    1.视图 1.1.创建.删除及调用普通视图 1.2.高级视图介绍 2.函数 2.1.系统函数介绍 2.2.创建.删除及调用自定义函数 3.存储过程 3.1.创建.修改及删除存储过程 3.2.调用存储过 ...

随机推荐

  1. Django REST Framework的序列化器是什么?

    # 转载请留言联系 用Django开发RESTful风格的API存在着很多重复的步骤.详细可见:https://www.cnblogs.com/chichung/p/9933861.html 过程往往 ...

  2. MVC架构中的controller的几种写法

    开始写代码之前,我们先来看一下spring MVC概念.一张图能够清晰得说明. 除了controller,我们需要编写大量代码外,其余的都可以通过配置文件直接配置. MVC的本质即是将业务数据的抽取和 ...

  3. 算法-基数排序(radix sort)

    本文由@呆代待殆原创,转载请注明出处. 简介:这个排序是原来用在卡片排序机上的一个算法,一般用来比较具有多对关键字域的记录,如日期(年月日),通过基数排序我们会依次对年月日这三个关键字进行排序,只要对 ...

  4. Apache用户目录枚举工具apache-users

     Apache用户目录枚举工具apache-users Apache服务器提供UserDir模块,允许在网站为不同的用户设置对应的目录.这样,用户可以使用http://example.com/~use ...

  5. mysql对表的操作

    创建表 简单的方式 CREATE TABLE person ( number INT(11), name VARCHAR(255), birthday DATE ); 或者是 CREATE TABLE ...

  6. HDU 1166 敌兵布阵 <线段树 单点修改 区间查询>

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  7. [Codeforces 10E] Greedy Change

    Brief Introduction: 给你一些种类的硬币,用最少的硬币数表示X 求最小的使贪心算法错误的X Algorithm: 一道论文题,<A Polynomial-time Algori ...

  8. 【点分治】poj1741 Tree / poj2114 Boatherds / poj1987 Distance Statistics

    三道题都很类似.给出1741的代码 #include<cstdio> #include<algorithm> #include<cstring> using nam ...

  9. 【基数排序】bzoj1901 Zju2112 Dynamic Rankings

    论NOIP级别的n²算法…… 跟分块比起来,理论上十万的数据只慢4.5倍左右的样子…… #include<cstdio> #include<algorithm> using n ...

  10. 【动态规划】【记忆化搜索】1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组

    跟CODEVS 3415没有什么区别,也不用高精度. http://www.cnblogs.com/autsky-jadek/p/4055184.html #include<cstdio> ...