oracle带参数的视图缺点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle带参数的视图缺点相关的知识,希望对你有一定的参考价值。

缺点: 数据及时性不好,如果服务器配置较⾼此缺点可以忽略sql server必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,sql server也要把它变成一个复杂的结合体,需要花费一定的时间。

 2)修改限制  

当用户试图修改试图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的试图来说,这是很方便的,但是,对于比较复杂的试图,可能是不可修改的。
参考技术A 1、视图无法插入的数据,只能查看,无法修改或者删除数据;

2、查询效率较低,因为每次查询时都需要重新计算参数;

3、当参数发生变化时,视图也需要重新创建,以便更新数据;

4、由于带参数的视图经常需要重新创建,所以管理起来比较麻烦;

5、使用带参数的视图会增加数据库的负担,因为每次查询都需要重新计算参数。
参考技术B 我是一头牛
程序员
视图(view)定义:
视图是一张虚表,不占用物理空间(指的是图中数据不占用,视图本身定义语句还是存在硬盘中)
视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。
视图的定义存在数据库中,与此定义相关的数据并没有再存一份于数据库中。通过视图看到的数据存放在基表中。
视图看上去非常像数据库的物理表,对它的操作同任何其他的表(增、删、改、查)。当通过修改视图修改数据时,实际是在改变基表中的数据;相反的,基表中数据的改变也会自动反应到由基表产生的视图中。由于逻辑上的原因,有些Oracle视图可以修改对应的基表,有些则不能(仅能查询)。
视图的作用:

将一些查询复杂的SQL语句变为视图,便于查询。
视图的创建:

语法:在CREATE VIEW语句后加入子查询。
CREATE [OR REPLACE] VIEW view [(alias[, alias]...)] AS subquery [WITH READ ONLY];
举个栗子-->
create or replace view v$_emp_dept as select emp.deptno,ename,dname from emp join dept on emp.deptno=dept.deptno with read only
查询视图时,不需要再写完全的查询语句,只需要简单的写上从视图中查询的语句就可以了
select * from v$_emp_dept
视图也可以从视图中产生:
create view v$_emp_dept_tem as select ename,sal from v$_emp_dept
修改视图的数据,就是修改基表的数据:
create or replace view v$_emp as select empno,ename from emp with read only select * from v$_emp; select * from emp; update emp set sal = 8888 where empno = 9527;

Oracle 10g 带参数的游标 Error

【中文标题】Oracle 10g 带参数的游标 Error【英文标题】:Oracle 10g A cursor with parameter Error 【发布时间】:2014-04-25 11:52:38 【问题描述】:

我不明白为什么会出现此错误。我有表格,但代码示例无法正常工作。这里有什么问题?

DECLARE 
    CURSOR c_cust(p_city VARCHAR2) IS 
        SELECT * FROM cust WHERE cust.city=p_city;
    v_cust c_cust%ROWTYPE;  
    v_city c_cust%TYPE;
BEGIN
    v_city := 'London';
    OPEN c_cust (v_city);
    LOOP
        FETCH c_cust INTO v_cust;
        EXIT WHEN (c_cust%NOTFOUND);
        DBMS_OUTPUT.PUT_LINE (v_cust.cname || ' has ' || v_cust.rating);
    END LOOP;
    IF (c_cust%ISOPEN) THEN CLOSE c_cust;
END;

ORA-06550:第 15 行,第 4 列:PLS-00103: 遇到符号“;” 预期以下情况之一时:如果

    声明 CURSOR c_cust(p_city VARCHAR2) 是 SELECT * FROM cust WHERE cust.city=p_city;**

【问题讨论】:

"Oracle 无法正常工作" 是一个很好的声明... 是 :) 编辑了线程名称。 【参考方案1】:

c_cust%ISOPEN 应该在结束循环之前;

If .... then
  ....
end if;

如果你错过了结局;

【讨论】:

以上是关于oracle带参数的视图缺点的主要内容,如果未能解决你的问题,请参考以下文章

oracle 视图传递参数

oracle,过程,带参数的表

oracle存储过程(带参数的存储过程)

如何创建带参数的 Oracle 存储过程?

SQL Server 如何执行 带参数的 存储过程

Falsk返回参数带参视图函数