oracle——基础知识

一、Oracle中的数据类型

1、字符串类型。如:char、nchar、varchar2、nvarchar2。
2、数值类型。如:int、number(p,s)、integer、smallint。
3、日期类型。如:date、interval、timestamp。
4、PL/SQL类型。如:pls_integer、binary_integer、binary_double(10g)、binary_float(10g)、boolean。plsql类型是不能在sql环境中使用的,比如建表时。
5、自定义类型。利用 TYPE 定义;一个type 就像是复合变量: 个人理解这个type 就是一个数组一样,不过他返回值只有一个值。而且需要赋值

select to_char(sysdate,‘yy-mm-dd hh24:mi:ss‘) from dual   //显示:08-11-07 13:22:42

select to_date(‘2005-12-25,13:25:59‘,‘yyyy-mm-dd,hh24:mi:ss‘) from dual //显示:2005-12-25 13:25:59

而如果把上式写作:select to_date(‘2005-12-25,13:25:59‘,‘yyyy-mm-dd,hh:mi:ss‘) from dual,则会报错,因为小时hh是12进制,13为非法输入,不能匹配。

二、PL/SQL语句块

是一个块结构,划分为:声明部分、  执行部分、  异常处理部分三部分。如下

Declare

声明部分    --位于 Declare 和 Begin 之间

Begin

执行部分    --位于 Begin 和 Exception 之间;无 Exception 时,位于 Begin 和  End 之间

Exception

异常执行部分  --位于 Exception 和 End 之间

End ;  --必须加分号

1、声明变量:

   变量名 [CONSTANT] 变量类型 [[NOT NULL] :=|DEFAULT expression];  //与SqlServer不同,变量名前无需@

注:

  • CONSTANT:常量;
  • NOT NULL:约束条件,若有,则初始化必须赋值;
  • := 赋值符号;直接赋上默认值。

  例: 

declare
a varchar2(20):=‘12‘;
sqltable varchar(200);
sqlText varchar(1000);

2、执行部分

用于逻辑运算和查询等,常用语句:Dbms_output.put_line(‘1‘);  --类似于SqlServer中的 print。

3、异常处理

三、基本操作

1、

2、查看字段类型

select * From all_tab_columns where table_name=upper(‘表名‘);

3、is与as

在 存储过程 和 函数 中没有区别;在 视图 中只能用 AS 不能用 IS ;在 游标 中只能用 IS 不能用 AS 。 从其定义也可以看出没什么区别。

create [or replace] procedure procedure_name
 [(parameter_name [in | out | in out] type [,........])]
  {is | as}
begin
   procedure_body
end procedure_name;

5、EXECUTE IMMEDIATE。代替了以前Oracle8i中DBMS_SQL package包,它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块。

使用技巧:1. EXECUTE IMMEDIATE将不会提交一个DML事务执行,应该显式提交如果通过EXECUTE IMMEDIATE处理DML命令,那么在完成以前需要显式提交或者作为EXECUTE IMMEDIATE自己的一部分. 如果通过EXECUTE IMMEDIATE处理DDL命令,它提交所有以前改变的数据2. 不支持返回多行的查询,这种交互将用临时表来存储记录(参照例子如下)或者用REF cursors.3. 当执行SQL语句时,不要用分号,当执行PL/SQL块时,在其尾部用分号;4.举例:execute immediate ‘select count(1) from tempA‘。

问题:如何让过程返回数据集?

回答:

关键有两点:一是使用out类型的参数。二是该参数使用特殊数据类型:系统引用游标类型(sys_refCursor)。

过程返回数据集,可以在PL/SQL程序中由另一个块或过程接收;

问题:cursor类型与sys_refCursor类型有什么区别?

回答:

Cursor是游标类型,代表是数据集本身,只能在PL/SQL程序中关闭;可以通过游标FOR循环或者定义cursor来完成。

而sys_refCursor代表的是游标的引用,即数据集的引用地址,只能通过open for语句来完成。

两者的最大区别是后者可以将这个地址传递给其它程序。

问题:据说“ref cursor类型”也能够返回数据集,与sys_refCursor有什么关系?

回答: ref cursor是Oracle旧版本中使用的数据类型,用这种对象的缺点在于必须在包中定义;而现在用ys_refCursor类型,可以直接使用。
时间: 2024-10-10 05:55:04

oracle——基础知识的相关文章

【转载:Oracle基础知识】Oracle数据库体系结构

先来看张直观的图:                                            oracle 11g 体系结构图 理解Oracle体系结构要充分理解三个概念:数据库(database),数据库实例(instance),会话(session),一定不要把这三个概念弄混. 数据库的概念 (A)    物理存储结构由数据文件.控制文件.重做日志文件组成: 1.       数据文件(datafile) select * from dba_data_files; 数据文件包括存

Oracle基础知识笔记(10) 约束

大清早打开vs2008,出现这么诡异的错, 删了一个dll的就好了.如图 Oracle基础知识笔记(10) 约束

Oracle基础知识笔记(11) 建表、更新、查询综合练习

有某个学生运动会比赛信息的数据库,保存了如下的表: 运动员sporter(运动员编号sporterid,运动员姓名name,运动员性别sex,所属系号department) 项目item(项目编号itemid,项目名称itemname,项目比赛地点location) 成绩grade(运动员编号id,项目编号itemid,积分mark) 请用SQL语句完成如下功能: 1.  建表,并在相应字段上增加约束: 定义各个表的主键和外键约束: 运动员的姓名和所属系别不能为空: 积分要第为空值,要么为6,4

Oracle基础知识

一.oracle安装过程略 二.sys用户和system用户 (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限 默认密码是change_oninstall (2)system用户是管理操作员,权限也很大,具有sysoper角色,但没有create database的权限,默认密码为manager (3)一般对数据库的维护,使用system用户登录就足够了 三.oracle的启动 所谓的启动是指启动oracle的实例,即OracleServic

[转载]Oracle基础知识

一.oracle安装过程略 二.sys用户和system用户 (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限 默认密码是change_oninstall (2)system用户是管理操作员,权限也很大,具有sysoper角色,但没有create database的权限,默认密码为manager (3)一般对数据库的维护,使用system用户登录就足够了 三.oracle的启动 所谓的启动是指启动oracle的实例,即OracleServic

oracle——基础知识(二)

1.select 查询 单独的一条 select 语句 在PL/SQL中通过SELECT从数据库中检索数据: 语法: <1> 必须使用INTO子句 <2> 查询必须并且只能返回一行 <3> 可以使用完整的SELECT 语法 使用SELECT 命令,可以从数据库中取出单行数据   使用DML命令,修改数据库中的行     使用COMMIT 或ROLLBACK 命令控制事务     通过EXECUTE IMMEDIATE,执行DDL     1.查看字段类型 select

Oracle基础知识笔记

1.打开oracle相关服务 2.创建Oracle用户 create user 用户名 identified by 密码;(需要dba角色创建) 3.权限管理 (1)添加权限 grant  权限.角色 to 用户名[with admin option](系统权限); grant 权限 on 表名 to 用户名 [width grant option] (对象权限); (2)删除权限 revoke 权限.角色  from 用户名; revoke 权限 on 表名 from 用户名; 4.切换角色

oracle 基础知识

1.  AIX环境下查看oracle配置信息(service_name.SID.tnsname). SID: echo $ORACLE_SID service_name: sqlplus / as sysdba; show parameter instance_name; show parameter service_names; show parameter service; select instance_name from v$instance; tnsname: netca 查看: tn

oracle 基础知识(四) 构成

一, oracle服务 一个oracle 服务由一个oracle 实例和一个oracle数据库组成. oracle = instance + database 总体概念: 二, oracle 实例 01,实例? 实例是一种访问oracle数据库的方式,始终打开一个方式,并且只打开一个数据库.它包括内存结构(SGA)和一系列后台进程(background process),两者合起来称为一个oracle实例. Oracle instance = sga+ background Process 02