繁体   English   中英

在过程PL / SQL中创建视图

[英]Create View in procedure PL/SQL

我在论坛上看过,但此问题尚无答案。 基本上,我试图在我的过程中创建一个视图,因为它比一个复杂的select语句更容易,因为它返回的是'ORA-01422精确获取返回的行数超过了请求的行数',因此似乎不起作用。底部供参考

但是,视图选项似乎无法正常工作,它会返回另一个错误“在预期以下情况之一时遇到符号“ CREATE”:”。 我做错什么了吗?

感谢您的浏览。

procedure proRekt (par_id number) is 
  vardec farm.parcel.description%type;
  vland farm.landuse.landuse_id%type;
  v_luse farm.landuse.landuse%type;
  varpl farm.parcel.parcel_id%type;

begin  
 create or replace view Door as
select a.parcel_id,a.description,b.landuse_id,c.landuse
from 
     farm.parcel a,
     farm.parcel_landuse b,
     farm.landuse c
where a.parcel_id = b.parcel_id
  and b.landuse_id = c.landuse_id;

 select parcel_id,description,landuse
    into varpl,
         vardec,
         vland
  from   door
  where  parcel_id = parID;

****错误的选择语句

select a.parcel_id,c.description,a.landuse_id,b.landuse
into   varpl,
       vardec,
       vland,
       v_luse
from   farm.parcel_landuse a,
       farm.landuse b,
       farm.parcel c
where  c.parcel_id = parID
  and  a.landuse_id = b.landuse_id
  and  a.parcel_id = c.parcel_id;

在SQL作用域中创建视图:

create or replace view Door as
select a.parcel_id,
       a.description,
       b.landuse_id,
       c.landuse
from   tithedb.parcel a
       INNER JOIN tithedb.parcel_landuse b
       ON ( a.parcel_id = b.parcel_id )
       INNER JOIN tithedb.landuse c
       ON ( b.landuse_id = c.landuse_id );

在过程的PL / SQL范围内使用它:

procedure proexempt (parID number)
is 
  vardescription tithedb.parcel.description%type;
  varland tithedb.landuse.landuse_id%type;
  varlanduse tithedb.landuse.landuse%type;
  varparcel tithedb.parcel.parcel_id%type;
begin  
  select parcel_id,
         description,
         landuse
  into   varparcel,
         vardescription,
         varlanduse
  from   door
  where  parcel_id = parID;

  -- ... more stuff
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL; -- Handle error here.
  WHEN TOO_MANY_ROWS THEN
    NULL; -- Handle error here (or use "AND ROWNUM = 1" in your query).
END proexempt;
/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM