创建可以传参数的视图(Oracle)

1.创建一个package

--定义包
create or replace package view_move_user is
--set值方法
function set_moveuser(moveuser varchar2) return varchar2;
--get值防范
function get_moveuser return varchar2;

end view_move_user;




2.创建package body,实现package中的两个方法

--包方法实现
create or replace package body view_move_user is 

	paramValue varchar2(32);

--给paramValue赋值

	function set_moveuser(moveuser varchar2) return varchar2 is
	begin
		paramValue :=moveuser;
		return moveuser;
	end;

--返回paramValue的值
	function get_moveuser return varchar2 is
	begin 
		return paramValue;
	end;
end view_move_user;


--3.创建带参数视图view_move_user.get_moveuser()是从方法中获取传入的参数

create view view_move2 as 
SELECT U.NAME,U.MOVE_USER,C.CLASS_NAME  FROM NJP_USER_TEST U
INNER JOIN CLASS C  ON U.ID=C.U_ID
where U.MOVE_USER=view_move_user.get_moveuser()


--查询带参数视图
select  *  from view_move2 where view_move_user.set_moveuser('USER1')='USER1'


  

  

建表语句:

DROP TABLE "njp"."CLASS";
CREATE TABLE "njp"."CLASS" (
  "ID" VARCHAR2(255 BYTE) NOT NULL,
  "CLASS_NAME" VARCHAR2(255 BYTE),
  "U_ID" VARCHAR2(255 BYTE)
)
LOGGING
NOCOMPRESS
PCTFREE 10
INITRANS 1
STORAGE (
  INITIAL 65536 
  NEXT 1048576 
  MINEXTENTS 1
  MAXEXTENTS 2147483645
  BUFFER_POOL DEFAULT
)
PARALLEL 1
NOCACHE
DISABLE ROW MOVEMENT
;

-- ----------------------------
-- Records of CLASS
-- ----------------------------
INSERT INTO "njp"."CLASS" VALUES ('1', 'CLASS1', '1');
INSERT INTO "njp"."CLASS" VALUES ('2', 'CLASS2', '2');


---------------------------------------------------------------------------
DROP TABLE "njp"."NJP_USER_TEST";
CREATE TABLE "njp"."NJP_USER_TEST" (
  "ID" VARCHAR2(255 BYTE) NOT NULL,
  "NAME" VARCHAR2(255 BYTE),
  "MOVE_USER" VARCHAR2(255 BYTE)
)
LOGGING
NOCOMPRESS
PCTFREE 10
INITRANS 1
STORAGE (
  INITIAL 65536 
  NEXT 1048576 
  MINEXTENTS 1
  MAXEXTENTS 2147483645
  BUFFER_POOL DEFAULT
)
PARALLEL 1
NOCACHE
DISABLE ROW MOVEMENT
;

-- ----------------------------
-- Records of NJP_USER_TEST
-- ----------------------------
INSERT INTO "njp"."NJP_USER_TEST" VALUES ('1', 'NAME1', 'USER1');
INSERT INTO "njp"."NJP_USER_TEST" VALUES ('2', 'NAME2', 'USER2');

参考资料:

ORACLE创建带参数视图-实践 - 百度文库

在Oracle中如何创建带参数的视图? - 走看看 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值