1.原理:
利用程序包来为视图中的变量赋值
2.实现:
首先:创建程序包来为参数赋值。参数类型可以是你想要的任意类型
创建包头
create or replace PACKAGE P_VIEW_PARAM AS
--第一个参数
FUNCTION GET_VALUE RETURN VARCHAR2;
FUNCTION SET_VALUE(PARAM VARCHAR2) RETURN VARCHAR2;
--第二个参数
FUNCTION GET_VALUE_1 RETURN NUMBER;
FUNCTION SET_VALUE_1(PARAM NUMBER) RETURN NUMBER;
--第一个参数
FUNCTION GET_VALUE_2 RETURN VARCHAR2;
FUNCTION SET_VALUE_2(PARAM VARCHAR2) RETURN VARCHAR2;
END P_VIEW_PARAM;创建包体
create or replace PACKAGE BODY P_VIEW_PARAM IS
--三个参数
PARAMVALUE VARCHAR2(16);
PARAMVALUE_1 NUMBER;
PARAMVALUE_2 VARCHAR2(16);
--第一个参数 get set
FUNCTION SET_VALUE(PARAM VARCHAR2) RETURN VARCHAR2 IS
BEGIN
PARAMVALUE:=PARAM;
RETURN PARAM;
END;
FUNCTION GET_VALUE RETURN VARCHAR2 IS
BEGIN
RETURN PARAMVALUE;
END;
--第二个参数 get set
FUNCTION SET_VALUE_1(PARAM NUMBER) RETURN NUMBER IS
BEGIN
PARAMVALUE_1:=PARAM;
RETURN PARAM;
END;
FUNCTION GET_VALUE_1 RETURN NUMBER IS
BEGIN
RETURN PARAMVALUE_1;
END;
--第三个参数 get set
FUNCTION SET_VALUE_2(PARAM VARCHAR2) RETURN VARCHAR2 IS
BEGIN
PARAMVALUE_2:=PARAM;
RETURN PARAM;
END;
FUNCTION GET_VALUE_2 RETURN VARCHAR2 IS
BEGIN
RETURN PARAMVALUE_2;
END;
END P_VIEW_PARAM;
然后创建视图:在视图中通过包里的get方法来得到 参数
CREATE OR REPLACE VIEW VIEW_TEST AS
SELECT * FROM TABLE_NAME WHERE 列=P_VIEW_PARAM.GET_VALUE();
最后使用视图的时候为参数赋值:
select * from view_test where p_view_param.set_value(11)=11;
3.需要注意的地方:
创建程序包的时候要先创建包头,然后删掉包头代码在写创建包体代码。---如果你是纯sql 创建的话。
先给 包里定义的参数赋值 并连接成查询条件 where p_view_param.set_value(11)=11
然后 视图里去到包里定义的参数 P_VIEW_PARAM.GET_VALUE()
个人理解:这里的包相当于 一个java类 一个对象 它里面定义了 变量和变量的get set 方法 你先通过set方法设值 然后通过 get 方法得值。
oracle 带参数 视图创建
最新推荐文章于 2023-07-08 17:53:48 发布