欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle中创设带in参数的视图

更新时间: 2014-01-05 02:10:14 责任编辑: Author_N1

 

oracle中创建带in参数的视图
为了创建带参数的视图,在网上搜索了一下,基本可以实现,但是如果我的条件是in不是=,就搞不定了。具体做法如下:
1. 建立package
create or replace package p_view_param  is
   function set_param(lottype in varchar2) return varchar2;
   function get_param  return varchar2;
   end p_view_param;

create or replace package body p_view_param is
       paramValue varchar2(100);

       function set_param(lottype in  varchar2) return varchar2 is
       begin
         paramValue:=lottype;
         return lottype;
        end;

       function get_param return varchar2 is
       begin
         return paramValue;
       end;
end p_view_param;

2.建立view
 create or replace view p_view_user as 
     select lotid,lottype from sdb_tB_info_wip where lottype = p_view_param.get_param(); 

3. 使用view
   select * from p_view_user where p_view_param.set_param('LF')='LF',这样可以出来想要的结果

问题是如果把view脚本改成下面的:
 create or replace view p_view_user as 
     select lotid,lottype from sdb_tB_info_wip where lottype in p_view_param.get_param(); 

运行下面语句返回的结果是('LF','L')
 SELECT p_view_param.set_param('(''LF'',''L'')') FROM DUAL

但是通过访问view却没有任何结果:
select * from p_view_user where p_view_param.set_param('(''LF'',''L'')')=('LF','L')

请高手指点一下,这里应该如何操作了喃?








 

--参考方法--
select * from p_view_user where p_view_param.set_param('(''LF'',''L'')')=('LF','L')


如果上面的代码是从你源代码中复制过来的话,我提醒你上面有中文括号
--参考方法--
引用:
为了创建带参数的视图,在网上搜索了一下,基本可以实现,但是如果我的条件是in不是=,就搞不定了。具体做法如下:
1. 建立package
create or replace package p_view_param  is
   function set_param(lottype in varchar2) return varchar2;
   function get_param  r……

同意1楼的观点
--参考方法--
首先明确一下,In (‘a','b')里表名看起来虽然是字符串,但是实际上是逗号分割的列

要将传入的字符串参数lottype转换成列
--参考方法--
你根本就没理解in怎么用

in(1,2)相当于in(?,?) 里面是不能拼接的

你拼接个1,2进去相当于in(?)
它会查找的值   =  1,2 而 不是 =1 or =2
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:10:14
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/6470/
本文WWW.DOC100.NET DOC100.NET版权所有。